TIL/Python

코테로 파이썬 공부하기 Ⅵ

Kou_ 2026. 5. 28. 18:32

26-05-28

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

 

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

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

school.programmers.co.kr

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

  • 하샤드 수
    양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
    • 컴퓨팅 사고
      • 앞서 각 자리수를 더한 값으로 x를 나눠 나머지가 0인지 확인한다.
      • x의 자릿수를 map과 list로 분리한 뒤 sum으로 합한다.
    • my_answer (⭕)
      def solution(x):
          a = sum(list(map(int,str(x))))
          if x%a==0:
              answer = True
          else:
              answer = False
          return answer
      • list(map(함수, 리스트)) : 자릿수 구분에 제일 많이 사용
        위의 코드에서 str(x)를 사용해 문자열로 만들면 문자열은 Iterable 객체라서 한 글자씩 분리가 가능
        → 분리된 객체에 각각 map으로 int를 씌우는 것
  • 두 정수 사이의 합
    두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
    예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
    • 컴퓨팅 사고
      • a>b의 경우와 b>a의 경우를 각각 고려
      • range를 사용하여 0부터 for문을 사용해 i를 a부터 b까지 더할 것
    • my_answer (⭕)
      def solution(a, b):
          answer = 0
          if a<b:
              for i in range(a,b+1):
                  answer+=i
          else:
              for i in range(b,a+1):
                  answer+=i
          return answer
    • 다른 사람 풀이
      • 가우스 합 (최대값 + 최솟값)/(갯수*0.5) 활용
        def adder(a, b):
            return (a+b)*(abs(a-b)+1)//2

      • 최대, 최소 함수 활용
        def adder(a, b):
            return sum(range(min(a, b), max(a, b)+1))    #min, max를 활용해 최소~최대까지 range를 설정 가능
  • 콜라츠 추측
    1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
    1-1. 입력된 수가 짝수라면 2로 나눕니다. 
    1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
    2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

    예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.
    • 컴퓨팅 사고
      • 입력 숫자가 1 될 때 까지 반복은 while로 설정 
      • 짝수 조건걸고 1-1, 아닐 대 1-2 설정
      • 결과가 500 넘을 때를 조건으로 -1 반환
    • my_answer (⭕)
      def solution(num):
          answer = 0
          while num != 1:
              if num%2==0:
                  num = num/2
                  answer+=1
              else:
                  num = num*3 + 1
                  answer+=1
          if answer>500:
              answer=-1
          return answer
      • while 문 : while 문에서 조건은 해당 조건이 성립하는 동안만 실행하는 것
        → 즉, 1이 될 때까지 실행하고 싶다면 1이 아닐 때를 조건으로 만들면 되는 것

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

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