Koala - 7기/기초 알고리즘 스터디
[백준/python] 11068번 회문인 수
닉네임뭘로해요
2022. 7. 31. 23:51
https://www.acmicpc.net/problem/11068
10진수를 입력 받고, 그 수를 2~64진수로 바꾼 수가 회문이 되는지를 확인하는 문제이다.
2~64진수로 바꾼 총 63개의 숫자 중 한 개라도 회문이 된다면 1을 출력, 그렇지 않다면 0을 출력하면 된다.
전형적인 회문 문제처럼 리스트에 {입력값%n진수}를 차곡 차곡 담는 방식으로 풀 수 있다.
다만, 문제의 예시처럼 15, 15를 각각 F, F로 바꿔주는 과정은 불필요하다.
n진수 반복문을 하나 만들고, 입력값을 n진수로 나누면서 몫이 0이 될때까지 나누어준다. 나머지는 리스트에 저장해준다.
리스트를 거꾸로 나열한 것은 입력값을 n진수로 변환한 값을 의미한다. 하지만 회문인지만 확인하면 되므로, 순서는 상관 없다.
정답을 확인할 새로운 리스트를 하나 만들고, 회문이 아닐 경우에 'X' 표시를 넣어줬다.
만약 n진수로 변환했을 때, 회문인 것이 하나도 없다면 ans 리스트에는 2~64, 총 63개의 X가 담겼을 것이다.
len(ans)가 63이라면 0을 출력, 그렇지 않다면 (회문이 1개라도 있는 경우) 1을 출력해주면 된다.