난이도 : D3
문제번호 : 1225
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다. |
제약사항
주어지는 각 수는 integer 범위를 넘지 않는다. 마지막 암호 배열은 모두 한 자리 수로 구성되어 있다. |
입력
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다. |
출력
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다. |
예시
입력 | 출력 |
1 9550 9556 9550 9553 9558 9551 9551 9551 2 2419 2418 2423 2415 2422 2419 2420 2415 ........ |
#1 6 2 2 9 4 1 3 0 #2 9 7 9 5 4 3 8 0 ....... |
2. 문제풀이
문제는 어렵지 않은데 이해를 잘못하여 고생했던 문제였다. 저는 한사이클이 모든 수를 1~8까지 감소시키는 거라고 생각했는데 1~5가 한사이클이었다. 꺼내서 숫자를 깍는데 제일 앞의 숫자를 꺼낸다. 숫자를 감소시키고 나서 제일 뒤에 넣어준다. 0보다 작다면 0으로 바꿔주고 암호생성을 멈춘다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#D3 1225 암호생성기
T = 10
for t in range(1, T+1):
input()
password = list(map(int, input().split()))
i = 1
while True:
a = password.pop(0) - i
#0보다 작아지면 0으로 바꿔준다.
if a < 0: a = 0
password.append(a)
#마지막 숫자가 0이 되었다면 그암호가 되므로 반복문 종료
if a <= 0: break
i += 1
#한사이클은 5까지이므로 숫자 갱신
if i > 5: i = 1
print('#{} '.format(t), end='')
print(*password)
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
상호의 배틀필드 Python(SW Expert Academy) (0) | 2020.03.21 |
---|---|
수의 새로운 연산 Python(SW Expert Academy) (0) | 2020.03.20 |
GNS Python(SW Expert Academy) (0) | 2020.03.18 |
Magnetic Python(SW Expert Academy) (0) | 2020.03.17 |
회문2 Python(SW Expert Academy) (0) | 2020.03.16 |
댓글