코딩테스트 입문 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)를 만족하면 추가될 수 있도록 설정했다.


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기