[프로그래머스 Python] 코딩테스트 입문 Day 3 - 사칙연산, 배열, 수학
코딩테스트 입문 Day 3 사칙연산, 배열, 수학
- 나머지 구하기
- 중앙값 구하기
- 최빈값 구하기
- 짝수는 싫어요
1. 나머지 구하기
정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(num1, num2):
return num1 % num2
(2) 코드 리뷰 및 회고
- 나머지 값만 반환하기 위해
%
기호를 사용했다.
2. 중앙값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
👉 문제 보러가기
(1) 코드 작성
# version 1 : 정렬하여 계산
def solution(array):
s_arr = sorted(array)
if len(s_arr)%2 == 0:
return int((s_arr[len(s_arr)//2] + s_arr[(len(s_arr)-1)//2])/2)
else:
return s_arr[len(s_arr)//2]
# version 2 : pandas 라이브러리 사용
import pandas as pd
def solution(array):
arr = pd.Series(array)
return arr.median()
# version 3 : numpy 라이브러리 사용
import numpy as np
def solution(array):
return np.median(np.array(array))
(2) 코드 리뷰 및 회고
- version 1. 정렬
- 중간값을 반환하기 위해 sorted 함수로 정렬했다.
- 정렬 후, 요소의 길이가 짝수이면 두개의 값을 가져와 2로 나눈 결과를 반환할 수 있도록 함
- 정렬 후, 요소의 길이가 홀수이면 중간 값을 가져옴
- version 2. pandas 라이브러리 사용
- pd로 리스트를 Series 형태로 변환한다.
- Series로 변환한뒤 median()로 중간값을 반환했다.
- version 3. numpy 라이브러리 사용
- np로 리스트를 numpy array 형태로 변환한다.
- 넘파이 형태로 np.median을 적용하면 중간값을 반환할 수 있다.
3. 최빈값 구하기
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
👉 문제 보러가기
(1) 코드 작성
def solution(array):
# 정수를 딕셔너리의 key 값으로 설정한다.
arr_dict = {x: 0 for x in set(array)}
val_list = []
for a in array:
arr_dict[a] += 1
answer = 0
for key, value in arr_dict.items():
val_list.append(value)
if answer < value:
answer = value
val_list = sorted(val_list, reverse=True)
if len(val_list) != 1 and (val_list[0] == val_list[1]):
return -1
else:
# key값과 value 값을 뒤집는다.
r_arr_dict = dict(map(reversed, arr_dict.items()))
return r_arr_dict[answer]
(2) 코드 리뷰 및 회고
- 최빈값을 구하기 위해 숫자별로 몇회 등장했는지 딕셔너리 형태로 만든다.
- 최빈값이 가장 큰 값을 answer 변수에 할당한다.
- 만약 등장 횟수가 정렬했을 때, 인덱스 0과 1번 값이 같다면 -1 반환한다.
숫자 : 등장횟수
형태의 딕셔너리 값을 key, value 값을 뒤집는다. (map 함수 사용)- 가장 많이 등장한 횟수(answer)를 key값으로 하는 value(숫자)를 반환한다.
4. 짝수는 싫어요
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(n):
return [x for x in range(1, n+1) if x%2 != 0]
(2) 코드 리뷰 및 회고
- 리스트 컴프리헨션을 사용했다.
- 1부터 n까지의 값에서 x가 짝수가 아닌 경우(
if x%2 != 0
)를 만족하면 추가될 수 있도록 설정했다.
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기