스터디/알고리즘
[2659] 십자카드 문제
세졍
2024. 1. 13. 18:40
문제이해
십자카드4숫자를 시계방향으로 이동해서 4개숫자 중 가장작은숫자가 : 시계수
1111~9999 숫자중 (카드에 0숫자는 없음 제외하기)
찾은 시계수가 몇번째로 작은지 구하기
#시계수 구하는 함수
def findclock(string_num): # 스트링인 숫자를 받아 정수인 시계수를 만드는 함수
clocknumber = 99999
ans = ''
for i in range(4):
ans = string_num[i:]+string_num[:i]
if clocknumber > int(ans):
clocknumber = int(ans)
return clocknumber
card = list(map(int,input().split())) # 2 1 1 2
string_num = ''.join(map(str, card)) # join은 스트링을 붙이니깐 str으로 변환하기 2112
num = findclock(string_num) # 시계수 찾음
#1111~9999숫자중에서 1122가 몇번째로 작은지 구하기
cnt = 0
for i in range(1111,num+1):
if '0' in str(i):
continue
if findclock(str(i)) == i : # 그숫자가 시계수찾는 함수를 돌렸을때 시계수여야한다
cnt += 1
print(cnt)
a = 2020
if 0 not in a:
print()
else:
print()
# 숫자에 0 이있는지 검사?? 안됨 오류남
# 0과 숫자를 문자열로 바꾸고 검사해야함
a = 2020
if '0' not in str(a):
print('')
else:
print('')
<comment>
clocknumber = 99999를 처음에 함수안에 안적고 입력받을때 정의하고
함수에는 global로 사용하였더니 마지막 for문을 돌때 한번돌았던 clocknumber로 계속사용되서
clocknumber = 99999로 갱신이 안됬다..(이유한참 찾음 디버깅의 중요성..!)