SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 문제 설명
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.

[1 사이클]

[암호 도출]
[제약 사항]
주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.
[출력]
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
2. 코드
간단한 문제였습니다. 맨 앞의 숫자를 빼서 맨 뒤로 보내며 0이되는 경우 종료하는 코드를 만들었습니다. 조금 특이하다고 생각하는 부분은 0이 나왔을 경우 p를 True로 만들면서 while문을 종료하도록 한 정도가 되는 것 같습니다.
아래가 작성한 코드입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
T = 10
for t in range(1, T+1):
N = int(input())
arr = list(map(int, input().split()))
p = False
while 1:
# 제일 앞의 숫자에서 1~5 사이의 수를 뺌
for k in range(1, 6):
temp = arr.pop(0) - k
# 뺀 숫자가 0보다 큰 경우는 맨 뒤에 숫자를 추가
if temp > 0:
arr.append(temp)
# 뺀 숫자가 0인경우 맨 뒤에 0을 추가하고 종료
else:
arr.append(0)
p = True
break
if p:
break
print('#{} '.format(t), end = '')
print(*arr)
|
'python' 카테고리의 다른 글
| 장훈이의 높은 선반 Python (SW Expert Academy) (0) | 2020.03.08 |
|---|---|
| 삼성시의 버스 노선 Python (SW Expert Academy) (0) | 2020.03.07 |
| [모의 SW 역량테스트] 벽돌 깨기 Python (SW Expert Academy) (0) | 2020.03.06 |
| [S/W 문제해결 응용] 7일차 - 행렬찾기 Python (SW Expert Academy) (0) | 2020.03.06 |
| [모의 SW 역량테스트] 등산로 조성 Python (SW Expert Academy) (0) | 2020.03.06 |