백준 2659번 파이썬

정재혁·2022년 7월 29일
0

백준 2659번 십자카드 문제

문제


입력 및 출력값


풀이:

해당 십자카드에 1~9까지의 수를 중복을 허용하여 기록한 뒤 시계방향으로 회전하면서 나오는 4개의 수중 가장 작은 값을 선별해 이를 시계수로 저장하여 문제를 푸는 문제다.
이때 시계수를 구하는 내용은 뒷부분에서 계산할 count에 사용되기 때문에 함수로 구현해 두었다.

시계수를 구했다면 반복문을 활용해 1111부터 시계수까지 숫자 중 0이 포함되지 않는 수에 대해 해당 4자리 각 수를 시계수로 구현해 기존 시계수보다 작다면 카운트를 세아리는 문제다.

해당 문제를 풀면서 헷갈린 것은 1121이 디버깅 과정에서 보이지 않았고 해당 수의 시계수는 1112이므로 시계수에 해당하지 않음을 알 수 있었다.

코드:

def find(n):
    lst =[]
    for i in str(n):
        lst.append(i)
    ans_lst = []
    for i in range(4):
        s = ''
        for x in lst:
            s += x
        ans_lst.append(int(s))
        lst.append(lst.pop(0))

    return str(min(ans_lst))

a,b,c,d = map(int,input().split())
n = a*1000+b*100+c*10+d

ans = find(n)
cnt = 1
for i in range(1111,int(ans)):
    s = str(i)
    if '0' not in s:
        if s == find(s):
            cnt += 1

print(cnt)

profile
저는 정재혁임니다^___^

0개의 댓글