본문 바로가기

카테고리 없음

[코딩테스트] 기본반A 18일차

문제 이름: 십자카드 문제(https://www.acmicpc.net/problem/2659)
문제 유형: 구현, 브루트포스 알고리즘, 정렬
난이도: S3
언어: Python
문제 탐색하기
시간 복잡도
코드 설계하기
시도 회차 수정사항
정답 코드

import sys

def solve(r):
    Sigyesu = list(map(int, str(r)))
    # print(Sigyesu)
    rotation = [0, 1, 2, 3] * 4
    # print(rotation)
    for i in range(4):
        update_min = int(Sigyesu[rotation[i+1]]*1000 \
                         + Sigyesu[rotation[i+2]]*100 \
                         + Sigyesu[rotation[i+3]]*10 \
                         + Sigyesu[rotation[i]])
        if r > update_min:
            r = update_min
    return r

# 입력
numbers = int(''.join(sys.stdin.readline().rstrip().split()))
# print(numbers)

result = solve(numbers)
# print(result)

cnt = 0
for i in range(1111, result+1): # 1111부터 1122까지
    check = list(map(int, str(i)))
    # print(check)
    if 0 not in check:
        if solve(i) == i:
            cnt += 1
print(cnt)