본문 바로가기

개발/Algorithm

[백준] 3의 배수(python)

 

 

1769번: 3의 배수

문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를

www.acmicpc.net

TL;DR

  • 구현(Implementation)
  • 문자열(String)

문제 요약

1. 주어진 자연수 X가 3의 배수인지 판정하기 위해서 제안된 "다른 문제로 바꾸어 풀기" 방법을 사용하려고 한다.
2. 다른 문제로 바꾸어 풀기는 다음과 같다.
    1. X의 각 자릿수를 더한 수 Y를 만든다.
    2. Y가 3의 배수인지 판별한다.
3. 알고 있는 3의 배수가 한 자리 수밖에 없다고 가정하면 Y가 한 자리 수가 나올 때 까지 다른 문제로 바꾸어 풀기를 진행해야 한다. 그 때의 문제 변환을 반복한 횟수와 결과의 3의 배수인지 판별하는 프로그램을 작성하라.

 

- X가 한 자리 수가 될 때까지 각 자릿수를 더한다. 한 자리수가 됬을 때까지 진행된 횟수와 그렇게 만들어진 한 자리 수가 3의 배수인지 판별하는 프로그램을 작성하면 된다.

- 문제에 나와 있는 규칙을 말 그대로 구현하면 된다.

입출력 형태

입출력 예시

 

예시 1 :: 힌트와 같이 한 자리수인 1이 될때까지 과정을 3번 반복한다. 1은 3의 배수가 아니므로 NO를 출력한다.

풀이

import sys
INPUT = sys.stdin.readline

X = INPUT()[:-1]
count = 0
while len(X) > 1:
  X = str(sum(map(int, X)))
  count += 1
X = int(X)

print(count)
if X % 3 == 0:
  print('YES')
else:
  print('NO')

 

while문 내에서 X가 한 자리 수가 될 때까지 각 자릿수의 합을 X로 갱신한다. 한 번 수행될 때마다 count를 증가시킨다.

while문의 실행이 종료되면 X는 한 자리 숫자가 되어 있다. 이 X가 3의 배수인지 판별하여 YES 또는 NO를 출력하면 된다.

반응형