본문 바로가기
  • think together
카테부 4기 판교 ai 실무/코테 공부

프로그래머스 코딩테스트 "입문 문제" Day3

by hwamgai 2026. 6. 23.

문제: 니머지 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120810

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

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

좋은 코드:

def solution(num1, num2):
    while num1 >= num2:
        num1 -= num2
    return num1
def solution(num1, num2):
    return divmod(num1, num2)[1]
solution = lambda num1, num2 : num1 % num2

 

 

 

 

 

문제: 중앙값 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120811

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

1. 오타
2. 나눗셈 이후에는 type이 float이다
# 수정 후
def solution(array):
    len_array = len(array)
    new_array = sorted(array)
    # 수정 전에는
    # int(len_array/2)+1 로 작성했는데, 그렇게하면 float에 반올림 이후 +1이라 
    # 원하는 값보다 +1로 나오게 됨
    return new_array[int(len_array/2)]

좋은 코드:

def solution(array):
    return sorted(array)[len(array) // 2]
def solution(array):
    array = sorted(array)
    length = len(array)//2
    return array[length]
def solution(array):
    answer = 0
    array.sort()
    answer = array[int((len(array) - 1) / 2)]
    return answer

 

 

 

 

문제 : 최빈값 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

내 코드:

# 참고했는데 코드 수정하면서 안 쓴 것들
파이썬 원소의 개수 : print(fruits.count('원소이름'))
파이토닉하게 조건문 작성 : message = "성공" if status == "success" else "실패"
sorted는 중복제거 안함 : result = sorted(set(numbers))
# 틀렸던 코드
def solution(array):
    cnt = 0
    answer = 0
    for i in range(len(array)):
        j = array.count(array[i])
        if array[i - 1] != array[i]:
            if answer < j:
                answer = j
            elif answer == j:
                cnt = -1
    return answer

# 제미나이 힌트
i = 0일 때의 함정
정렬(Sort)의 부재
'최빈값' 그 자체를 기억하는 변수의 부재

#그리고 아예 처음부터 다시 생각

def solution(array):
    ans1, ans2 = 0, 0
    array = sorted(array)
    kind = sorted(set(array))
    
    for i in range(len(kind)):
        j, k = array.count(kind[i]), kind[i]
        
        if ans1 < j:
            ans1 = j
            ans2 = k
        elif ans1 == j:
            ans2 = -1
            
          
    return ans2

좋은 코드:

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0: return a
    return -1
def solution(array):
    answer = 0
    idx = [0] * 1001
    for i in array:
        idx[i] +=1
    if idx.count(max(idx)) >1:
        return -1
    return idx.index(max(idx))
def solution(array):
    keys = set(array)
    dict = {}
    max_freq = []
    for key in keys:
        dict[key] = array.count(key)
    for key in keys:
        if dict[key] == max(dict.values()):
            max_freq.append(key)
    if len(max_freq) > 1:
        answer = -1
    else:
        answer = max_freq[0]
    return answer
def solution(array):
    num = 0
    data = 0
    for i in set(array):
        if array.count(i) > num:
            num = array.count(i)
            data = i
        elif array.count(i) == num:
            data = -1
    return data

 

 

 

 

 

문제: 짝수는 싫어요

https://school.programmers.co.kr/learn/courses/30/lessons/120813

 

코딩테스트 연습 - 짝수는 싫어요

알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려

school.programmers.co.kr

내 코드:

# 수정 전
def solution(n):
    answer = []
    for i in range(1,n+1,2):
        answer.append(i)
  
# 파이토닉하게 수정해보기
def solution(n):
    return [i for i in range(1,n+1,2)]
1) `answer = []`를 만들고 `append()`를 여러 번 호출할 필요 없이, `[이런 값을 넣을 거야 / for i가 돌 때마다]` 형태로 단 한 줄로 리스트를 생성해 반환할 수 있습니다.
2-1) 아쉬운 방식:
for i in range(len(array)):
     print(array[i])
2-2) 수정한 방식:
for item in array:
     print(item)

 

좋은 코드:

def solution(n):
    return [x for x in range(n + 1) if x % 2]
def solution(n):
    return list(range(1, n+1, 2))
def solution(n):
    answer = []

    for i in range(1, n + 1):
        if i % 2 == 1:
            answer.append(i)

    return answer