본문 바로가기
코딩테스트

프로그래머스 입문 Day 3 파이썬

by 피갓자 2025. 4. 29.

프로그래머스
프로그래머스

나머지 구하기

문제 설명

정수 num1num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

num1 num2 result
3 2 1
10 5 0

입출력 예 설명

입출력 예 #1

  • num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.

입출력 예 #2

  • num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.

solution.py

def solution(num1, num2):
    return num1 % num2

중앙값 구하기

문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다.

예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000

입출력 예

array result
[1, 27, 7, 10, 11] 7
[9, -1, 0] 0

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.

solution.py

def solution(array):
    return sorted(array)[len(array) // 2]

최빈값 구하기

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.

정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.

입출력 예 #2

  • [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.

입출력 예 #3

  • [1]에는 1만 있으므로 최빈값은 1입니다.

문제 분석

의사 코드(pseudo code)
1 배열 입력
2 배열의 빈도 수 계산
3 빈도 수가 가장 높은 값 구하기
  a 값이 하나라면 그 값을 반환
  b 값이 여러개면 -1을 반환

solution.py

def solution(array):
    count = [0] * 1001
    
    for i in array:
        count[i] += 1
    max_count = max(count)
    
    if count.count(max_count) > 1:
        return -1
    else:
        return count.index(max_count)
def solution(array):
    count = {}
    
    for i in array:
        count[i] = count.get(i, 0) + 1

    max_count = max(count.values())
    
    temp = [s for s, t in count.items() if t == max_count]

    return -1 if len(temp) > 1 else temp[0]

복잡도 분석

배열을 순회하면서 원소의 빈도 수를 계산하는 과정의 시간 복잡도는 O(n)입니다.
빈도 수가 가장 높은 값을 찾는 과정의 시간 복잡도는 O(n)입니다.
공간은 배열의 길이만큼 필요하므로 공간 복잡도는 O(n)입니다.
따라서 최종 시간 복잡도와 공간 복잡도는 O(n)입니다.

짝수는 싫어요

문제 설명

정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 100

입출력 예

n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]

입출력 예 설명

입출력 #1

  • 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.

입출력 #1

  • 15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.

solution.py

def solution(n):
    return [i for i in range(1, n + 1) if i % 2 != 0]