TIL/Python

코테로 파이썬 공부하기 Ⅶ

Kou_ 2026. 5. 29. 10:49

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

 

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

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

school.programmers.co.kr

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

  • 서울에서 김서방 찾기
    String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
    • 컴퓨팅 사고
      • .index() 메소드 사용해서 'Kim' 인덱스 위치 반환
    • my_answer (⭕)
      def solution(seoul):
          return f'김서방은 {seoul.index("Kim")}에 있다'
  • 나누어 떨어지는 숫자 배열
    array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
    divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
    • 컴퓨팅 사고
      • arr%divisor==0 인 조건을 사용
      • .sort()로 오름차순 정렬
      • count 같이 써서 if 조건에서 count가 계속 0 이면 answer를 -1로 반환
    • my_answer (⭕)
      def solution(arr, divisor):
          answer = []
          count = 0
          for i in arr:
              if i%divisor == 0:
                  answer.append(i)
                  answer.sort()
                  count += 1
          if count == 0:    # 이 조건이 for 문 내에 있으면 안나누어지는 값 하나만 나와도 -1 반환 가능성
              answer = [-1]
          return answer
    • 다른 사람 풀이
      def solution(arr, divisor): 
          return sorted([n for n in arr if n%divisor == 0]) or [-1]  # 리스트 컴프리헨션과 or 사용으로 축약
      • 핵심은 빈 리스트 [  ] 는 무조건 False라는 것 → or 조건이 발동
  • 음양 더하기
    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
    • 컴퓨팅 사고
      • 양수의 정수 부분끼리 더하고 음수의 정수 부분끼리 더한 뒤 양수의 정수 부분에서 음수의 정수 부분을 빼기
    • my_answer (🔺)
      def solution(absolutes, signs):
          p,m=0,0
          for i in range(len(absolutes)):
              if signs[i]==True:
                  p+=absolutes[i]
              else:
                  m+=absolutes[i]
          return p-m
      • 리스트에서 동일한 위치에 있는 값들을 지정해야함
        → 처음에는 딕셔너리에 각각을 저장하려 했지만 복잡해짐
        → 이후 위와 같이 i 로 인덱싱해서 동일한 인덱스 위치에 해당하는 값들끼리 같이 계산되도록 했음
    •  다른 사람 풀이
      def solution(absolutes, signs):
          answer=0
          for absolute,sign in zip(absolutes,signs):
              if sign:
                  answer+=absolute
              else:
                  answer-=absolute
          return answer
      • zip() 함수 : iterable 객체를 인자로 받아 동일 인덱스 위치 요소들을 튜플로 묶어서 반환
      • 굳이 각각 더하지말고 -= 하면 된다.    # 안되는줄...
      • 한 줄 숏코딩도 가능하긴 하다.
        def solution(absolutes, signs):
            return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
  • 핸드폰 번호 가리기
    프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
    전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
    • 컴퓨팅 사고
      • 전화번호는 길이가 일정하지 않다 → 하지만 뒤에서 4자리는 항상 고정
      • 뒷 4자리를 제외한 부분을 [:-4]로 슬라이싱해서 그 부분만 값을 변경
      • list(map())으로 쪼개고 다시 join 해야하나..?
    • my_answer (🔺)
      def solution(phone_number):
          return len(phone_number[:-4])*'*' + phone_number[-4:]
      • 뒷자리를 제외한 폰번호 길이만큼 *을 곱하고 나머지 뒷 4자리 더하면 되는 것

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

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