백준-2659

0

문제

  • 우선 주어진 4개의 숫자를 가지고 시계수를 구해야한다.
  • 입력을 리스트로 받고 맨마지막 숫자를 pop()하고 다시 앞에 삽입하는 과정을 거치면 4개의 숫자가 만들어진다.
  • 위에서 만들어진 숫자 4개에서 최소값을 구하면 이는 시계수가 되는 것이다.
  • 그리고 이 숫자가 몇번째 시계수인지를 알기 위해서는 1111 부터 해당 시계수까지의 반복문을 돌리면된다.
  • 이때 0이 포함되면 시계수가 아니기에 continue를 해준다.
  • 그리고 시계수 list를 생성해 중복을 점검한다.
n_list=list(input().split())

num=[''.join(n_list)]
for i in range(3):
    a=n_list.pop()
    n_list=[a]+n_list
    num.append(''.join(n_list))

result=int(min(num))

ans=0
t_num=[0 for _ in range(result+1)]
for i in range(1111, result+1):
    if '0' in str(i):
        continue
    n_str=list(str(i))
    num=[int(i)]
    for _ in range(3):
        a=n_str.pop()
        n_str=[a]+n_str
        num.append(int(''.join(n_str)))
    if t_num[min(num)]==0:
        ans+=1
        t_num[min(num)]=1
print(ans)
        

중복된 코드를 함수로 바꿨다.
-------수정-----------------

n_list=list(input().split())

def find_t_num(n):
    num=[''.join(n)]
    for i in range(3):
        a=n.pop()
        n=[a]+n
        num.append(''.join(n))

    return int(min(num))

result=find_t_num(n_list)

ans=0
t_num=[0 for _ in range(result+1)]
for i in range(1111, result+1):
    if '0' in str(i):
        continue
    n_str=list(str(i))
    n1=find_t_num(n_str)
    if t_num[n1]==0:
        ans+=1
        t_num[n1]=1
print(ans)
        

0개의 댓글