Coding Test/BaekJoon_Python

백준 2659 <십자카드 문제> Python

JunOnJuly 2023. 10. 25. 21:21
728x90

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

 

2659번: 십자카드 문제

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

www.acmicpc.net


따로 핵심 아이디어는 없었고 구현만 하면 풀 수 있는 문제였습니다.

다만 몇 번째인지 구할 때 십자수가 아닌 수를 주의하면 쉽게 풀 수 있습니다.


def solution(card):
    clock_num = find_min(card)
    return count_min(clock_num)


# 시계수 찾기
def find_min(card):
    min_card = int(card)
    # 카드 돌리면서 최솟값 찾기
    for _ in range(3):
        card = card[1:] + card[:1]
        if min_card > int(card):
            min_card = int(card)

    return min_card


# 시계수 순서 찾기
def count_min(clock_num):
    cnt = 1
    for i in range(1, 10):
        for j in range(1, 10):
            for k in range(1, 10):
                for l in range(1, 10):
                    temp_num = f'{i}{j}{k}{l}'
                    if temp_num == str(clock_num):
                        return cnt
                    if str(find_min(temp_num)) == temp_num:
                        cnt += 1
   
    return cnt


card = ''.join(input().split())
print(solution(card))
728x90