TIL/Python

코테로 파이썬 공부하기 Ⅷ

Kou_ 2026. 6. 1. 11:38

코테로 배워보는 파이썬 : 코드카타 28~30번

 

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

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

school.programmers.co.kr

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

  • 없는 숫자 더하기
    0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
    • 컴퓨팅 사고
      • 0~9까지 range로 i를 꺼낸 뒤 numbers에 들어있는지 확인해서 없으면 count+=i로 더하기
    • 내 코드 (⭕)
      def solution(numbers):
          count=0
          for i in range(0,10):
              if i in numbers:
                  pass
              else:
                  count+=i
          return count
    • 다른 사람 풀이 1
      def solution(numbers):
          return 45 - sum(numbers)   
      # 0~9까지 합한 값에서 numbers 원소 합을 빼면 원소가 아닌 값의 합이 나옴... (이건 코딩보다는 수학아닌가?)
    • 다른 사람 풀이 2
      def solution(numbers):
          answer=0
          for i in range(1,10):
              if i not in numbers:    # not in 을 쓰면 else로 안넘기고 바로 포함하지 않는 값을 조건으로 설정 가능
                  answer += i
          return answer
  • 제일 작은 수 제거하기
    정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
    • 컴퓨팅 사고
      • 가장 작은 값을 찾고 remove로 제거, 이후 리스트 길이가 1 0이면 -1 [-1] 반환
    • 내 코드 (🤖)
      def solution(arr):
          mini = min(arr)
          arr.remove(mini)
          if len(arr)==0:    # if가 remove 뒤에 등장해야 [-1]이 반환 가능하고, 때문에 길이 조건이 1이 아닌 0이어야 함.
              arr = [-1]
          return arr
  • 가운데 글자 가져오기
    단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
    • 컴퓨팅 사고
      • 예를 들어 study의 경우 길이를 절반으로 나눈값(2.5)를 int로 변환(2)해서 인덱스로 불러내면 가운데 글자
      • 만약 길이가 짝수라면 int 반환 인덱스랑 round 반올림 int 반환값-1 인덱스 두 글자를 반환
    • 내 코드 (⭕)
      def solution(s):
          if len(s) % 2 == 1:
              answer = s[int(len(s)/2)]
          else:
              answer = s[int(len(s)/2)-1] + s[int(len(s)/2)]    # 순서가 중요
          return answer
    • 다른 사람 풀이
      def solution(s):
          return str[(len(s)-1)//2 : len(s)//2 + 1]
      • 인덱스 슬라이싱으로 해결
        • 슬라이싱 조건 1
          홀수 길이 단어 ex) starcraft
          (len(s)-1)//2 → (9-1)//2 = 4    
          짝수 길이 단어 ex) time
          (len(s)-1)//2 → (4-1)//2 = 1    # // 는 몫만 반환
        • 슬라이싱 조건 2
          홀수 길이 단어 ex) starcraft
          len(s)//2 + 1  → 9//2 + 1 = 5     # // 는 몫만 반환
          짝수 길이 단어 ex) time
          len(s)//2 + 1  → 4//2  + 1= 3    
        • (len(s)-1)//2 : len(s)//2 + 1는 홀수 일 땐 가운데 인덱스만(4:5), 짝수일 땐 가운데 2글자(1:3)를 반환하는 범위가 되는 것

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

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