본문 바로가기
Programming/Python

[프로그래머스 Python] 하샤드 수, 두 정수의 합, 수박수박수박수박수박수?

by 용스토리랜드 2024. 6. 28.

1. 하샤드 수 

<문제 설명>   양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

 <문제 풀이> 

  • String 형태로 바꾸기
  • 순회하면서 변수 하나에 각 자릿수 모두 더하기 
  • 각 자릿수 합이 입력값 x 를 나눴을 때 나눠지는지 확인 (약수 판정) 
  • 나눠진다면, True 반환 !
def solution(x):
    # 18
    # i = 0, 1 (index)
    ha = 0
    for i in range(len(str(x))) : 
        ha += int(str(x)[i])
    if x % ha == 0:
        return True
    else : return False

✅<나의 풀이 키워드> 문자열(String) , Indexing, 나눗셈 활용


2. 두 정수 사이의 합

 <문제 설명>  두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

 <문제 풀이> 

  • Input 으로 받은 두 정수 중 어떤 값이 큰 값인지 먼저 판정 (min, max) 내장 함수 사용
  • 작은 수 ~ 큰 수 사이의 값 answer 에 누적합 해주기
def solution(a, b):
    answer = 0
    for i in range(min(a,b), max(a,b)+1) : 
        answer += i 
    return answer

✅<나의 풀이 키워드> 내장함수(min, max), 누적합


3. 수박수박수박수...

 <문제 설명>  길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

 <문제 풀이> 

  • 홀, 짝 문제로 접근 
  • 홀수일 때 '수' 누적 합 
  • 짝수일 때 '박' 누적 합
def solution(n):
    # n = 3
    answer = ''
    for i in range(1, n+1) : # 1, 2, 3 
        if i % 2 != 0: 
            answer+='수'
        else : 
            answer+='박'
    return answer
solution(3)

✅<나의 풀이 키워드> 홀짝, 누적합

반응형