💡문제접근
- 처음에 문제를 풀었을 때 한 가지 고려하지 못한 점이 있었다.
- 예를 들어 1121이 적혀있는 카드는 이 카드의 시계수가 1112로 앞에서 이미 세어주었기 때문에 1121을 시계수가 될 수 없다. 나는 이 조건을 고려하지 못해서 처음에 10이 나왔어야 하는 답이 계속 11이 나와서 WA를 받았다.
- 그래서 별도로 시계수를 구하는 함수와 입력받은 4가지 수의 조합으로 나올 수 있는 가장 작은 시계수를 구해서 카운팅해주는 방식으로 코드를 작성했다.
💡코드(메모리 : 34128KB, 시간 : 96ms)
from collections import deque
import sys
input = sys.stdin.readline
clock_num = deque(map(int, input().strip().split()))
result = []
for i in range(4):
num = clock_num[0] * 1000 + clock_num[1] * 100 + clock_num[2] * 10 + clock_num[3] * 1
result.append(num)
num = 0
temp = clock_num.popleft()
clock_num.append(temp)
Min_clock_num = min(result)
def make_clock_num(X):
Min = int(''.join(map(str, X)))
for i in range(1, 4):
res = int(''.join(map(str, X[i:] + X[:i])))
if Min > res:
Min = res
return Min
answer = 0
for i in range(1111, Min_clock_num+1):
if '0' not in list(str(i)) and i == make_clock_num(list(map(int, str(i)))):
answer += 1
print(answer)
💡소요시간 : 24m