백준(Python) 풀이/구현

백준(Python) 6679번 싱기한 네자리 숫자 풀이

개발윗미 2021. 11. 29. 14:05

Python으로 구현한 6679번 싱기한 네자리 숫자 문제 풀이입니다.

 

https://www.acmicpc.net/problem/6679

 

6679번: 싱기한 네자리 숫자

싱기한 네자리 숫자란, [1000,9999]인 10진수 숫자중에서,  다음의 조건을 만족하는 숫자를 말한다. 숫자를 10진수, 12진수, 16진수로 나타낸 다음, 각각의 숫자에 대해, 각 숫자의 자리수를 더했을

www.acmicpc.net


for i in range(2992, 10000) :
  data = i
  sixteen = 0
  while data != 0 :
    sixteen += data % 16
    data //= 16

  data = i
  twelve = 0
  while data != 0 :
    twelve += data % 12
    data //= 12

  data = i
  ten = 0
  while data != 0 :
    ten += data % 10
    data //= 10

  if sixteen == twelve == ten :
    print(i)

 

1. 싱기한 네자리 숫자의 첫 번째 수는 2992이기 때문에 반복문의 시작 값은 2992로 설정한다.

 

2. data에 i를 담고 sixteen을 초기화하여 while문을 통해 data가 0이 될 때까지 16으로 나눈 나머지 값을 sixteen에 누적한다.

 

3. data에 i를 담고 twelve를 초기화하여 while문을 통해 data가 0이 될 때까지 16으로 나눈 나머지 값을 twelve에 누적한다.

 

4. data에 i를 담고 ten을 초기화하여 while문을 통해 data가 0이 될 때까지 10으로 나눈 나머지 값을 ten에 누적한다.

 

5. 최종적으로 조건문을 통해 sixteen, twelve, ten의 값이 모두 일치할 경우 i를 출력한다.