TIL/Python

코테로 파이썬 공부하기 Ⅲ

Kou_ 2026. 5. 25. 17:00

26-05-25

코테로 배워보는 파이썬

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

코테 문제 풀어보고 응용 문제 생각나는거 직접 풀어보기!

  • 배열 순서 반대로하기
    정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
    • 컴퓨팅 사고 해보기
      • 순서를 거꾸로 뒤집는다 → .reverse()
    • my_answer (⭕)
      def solution(num_list):
          num_list.reverse()
          answer=num_list
          return answer
    • 다른 사람 풀이
      def solution(num_list):
          answer=num_list[::-1]    #인덱싱의 step을 -1로 조절해서 가장 간단한 방법
          return answer
  • 배열 두 배 만들기
    정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두 배 한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
    • 컴퓨팅 사고 해보기
      • 각 원소의 2배를 하기 위해 새로운 빈 리스트를 만든 뒤 numbers 원소를 하나씩 꺼내 2배한 뒤 append
    • my_answer (⭕)
      def solution(numbers):
          answer=[]
          for num in numbers:
              num=num*2
              answer.append(num)
          return answer
    • 다른 사람 풀이
      def solution(numbers):
          return [num*2 for num in numbers]    #리스트 컴프리헨션
  • 중앙값 구하기
    중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
    • 컴퓨팅 사고 해보기
      • 일단 array를 오름차순으로 정렬하고, 이후 전체 길이를 len으로 구한 뒤 절반 위치의 인덱스 값을 반환?
    • my_answer (⭕)
      def solution(array):
          array.sort()    #중앙값이란 리스트 중앙에 위치한 값이 아니라 크기 순으로 정렬했을 때 중앙에 위치한 값
          answer=array[int((len(array)/2)-0.5)]
          return answer
    • 다른 사람 풀이
      def solution(array):
          return sorted(array)[len(array)//2]    #몫만 남기면 int 사용 안해도 정수형
  • 최빈값 구하기
    최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
    • 컴퓨팅 사고 해보기
      • 최빈값 가장 자주 나오는 값 → 특정 값의 갯수(count())를 세어 max 값을 반환
    • my_answer (❌) : GPT 힌트로 완성한 것..ㅠ
      def solution(array):
          count_dict={ }
          for i in array:
              count_dict[i]=array.count(i)
              max_count=max(count_dict.values())
              if list(count_dict.values()).count(max_count)>1:
                  answer=-1
              else:
                  answer=max(count_dict, key=lambda x: count_dict[x])
          return answer
    • GPT 첨삭
      def solution(array):
          count_dict = {}
          max_count = 0
          answer = -1

          for i in array:
              # 등장 횟수 저장
              if i in count_dict:
                  count_dict[i] += 1
              else:
                  count_dict[i] = 1

              # 현재 숫자의 등장 횟수
              current_count = count_dict[i]

              # 더 큰 최빈값 발견
              if current_count > max_count:
                  max_count = current_count
                  answer = i
              # 같은 최빈값이 또 나온 경우
              elif current_count == max_count and answer != i:
                  answer = -1

          return answer
      • i가 몇 번 나왔는지 저장하고, i의 현재 최빈값을 이전 max_count와 비교해서 더 크면 기존max_count와 교체, 같은 최빈값이 나왔다 그러면 -1 출력 
    • 다른 사람 풀이
      def solution(array):
          num = 0    #현재 최빈값
          data = 0    #최빈값을 가지는 array 값
          for i in set(array):    #set을 통해 같은 i에 대한 여러번 반복 방지
              if array.count(i) > num:    #array의 i 수를 세서 num보다 크면
                  num = array.count(i)    #그 값을 새로운 num으로 저장
                  data = i    #최빈값을 가지는 값을 i로 변경
              elif array.count(i) == num:    #num과 같으면
                  data = -1    #data를 -1로 저장
          return data
  • 짝수는 싫어요
    정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
    • 컴퓨팅 사고
      • 홀수 조건(i%2!=0)을 활용
      • 오름차순 sort 써도 되지만 n 이하의 수를 range로 정의하면 자동으로 오름차순 정렬 가능
      • 새로운 리스트에 append해서 저장
    • my_answer (⭕)
      def solution(n):
          answer=[]
          for i in range(n+1):
              if i%2!=0:
                  answer.append(i)
          return answer
    • 다른 사람 풀이
      def solution(n):
          return [i for i in range(1, n+1, 2)]    #1부터 2씩 n까지 증가하는 배열도 동일한 결과
      • list comprehension : 결과값 for 변수 in 조건
      • 내 답을 리스트 컴프리헨션 한다면?
        def solution(n):
            return [i for i in range(n+1) if i%2!=0]
      • 추가로 생각해보기
        def solution(n):
            return [i for i in range(n+1) if i%2]
        → 이것도 동일한 결과가 나온다. 왜 그럴까?
        파이썬에서 0은 False, 그 외값은 True로 취급하기 때문
        즉 각각 홀수, 짝수일 때 i%2가 1, 0이고 이는 True, False이기 때문에
        홀수만 True로 취급되어 홀수만 [ ]에 저장되는 것

'TIL > Python' 카테고리의 다른 글

코테로 파이썬 공부하기 Ⅷ  (0) 2026.06.01
코테로 파이썬 공부하기 Ⅶ  (0) 2026.05.29
코테로 파이썬 공부하기 Ⅵ  (0) 2026.05.28
코테로 파이썬 공부하기 Ⅱ  (0) 2026.05.22
코테로 파이썬 공부하기 Ⅰ  (0) 2026.05.20