본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2659 십자카드 문제

by Alan_Kim 2023. 10. 18.
728x90
반응형

https://www.acmicpc.net/problem/2659

 

2659번: 십자카드 문제

입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다.

www.acmicpc.net

문제 해결

  • 주어진 입력값을 가지고 시계수를 구하는 함수를 만든다.
  • 그 방법은 맨 앞의 숫자를 맨 뒤로 옮겨가며 가장 최솟값이 나오는 수를 구하면 된다.
  • 1111은 가장 작은 시계수인 것은 명백하다.
  • x를 입력값을 십자모형의 카드에 넣어 얻은 시계수라고 하면
  • 1111부터 x까지 시계수의 개수를 구하면 되는 문제이다.

 

CODE

import sys
input = sys.stdin.readline

def clock_num(n):
    min_val = int(''.join(map(str,n)))
    for i in range(1,4):
        tmp = int(''.join(map(str,n[i:]+n[:i])))
        if min_val > tmp:
            min_val = tmp
    return min_val
if __name__=='__main__':
    nums = list(map(int, input().split()))
    clk_num = clock_num(nums)
    cnt = 1 #자기자신(clk_num)
    for i in range(1111,clk_num):
        if '0' not in list(str(i)) and i== clock_num(list(map(int,str(i)))): # 0이 안에 들어가면 안되고 i가 시계수여야 한다.
            cnt += 1
    print(cnt)
728x90
반응형

댓글