https://www.acmicpc.net/problem/2659
십자수를 구하는 로직 하나 짜고,
입력된 값의 십자수가 1111부터 몇번째 십자수인지 구하면 된다.
처음엔 문제를 잘못 이해해서
입력된 값의 십자수가 1111부터 몇번째 값인지만 구했는데 틀렸다.
틀린 파이썬 코드
#2659_십자카드 문제
import sys
input = sys.stdin.readline
clknum = int(''.join(input().split()))
clk=list(map(int,str(clknum)))
order = [0,1,2,3]*4
sorted_clk = []
for i in range(4):
newclknum = int(clk[order[i+1]]*1000 + clk[order[i+2]]*100 + clk[order[i+3]]*10 + clk[order[i]])
sorted_clk.append(newclknum)
if clknum > newclknum:
clknum = newclknum
cnt=0
for i in range(1111, clknum):
check_zero=list(map(int,str(i)))
if 0 not in check_zero:
cnt += 1
print(cnt)
십자수로 계속 카운트를 하는 로직으로 바꿔야했기 때문에
재귀로 바꾸어주었다.
맞은 파이썬 코드
#2659_십자카드 문제
import sys
input = sys.stdin.readline
order = [0,1,2,3]*4
def clkk(clknum):
clk=list(map(int,str(clknum)))
for i in range(4):
newclknum = int(clk[order[i+1]]*1000 + clk[order[i+2]]*100 + clk[order[i+3]]*10 + clk[order[i]])
if clknum > newclknum:
clknum = newclknum
return clknum
clknum = clkk(int(''.join(input().split())))
cnt=0
for i in range(1111, clknum+1):
check_zero=list(map(int,str(i)))
if 0 not in check_zero:
if clkk(i)==i:
cnt += 1
print(cnt)
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/알고리즘] #10821: 정수의 개수 [문자열] (0) | 2021.10.01 |
---|---|
[백준/알고리즘] #1448: 삼각형 만들기 [파이썬(python)/수학] (0) | 2021.09.29 |
[백준/알고리즘]#6896: 절사평균 [파이썬(python)/부동소수점] (0) | 2021.09.28 |
[백준/알고리즘]#11652: 카드 [파이썬(python)] (0) | 2021.09.27 |
[백준/알고리즘]#2331: 반복수열 [파이썬(python)/수학] (0) | 2021.09.27 |