Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 99클럽
- 네이티브애플리케이션
- 코딩테스트
- Java
- staging_area
- 파일사용권한
- 제너릭메서드
- 루트사용자
- string메서드
- Spring
- 향상된for문
- 배열탐색
- SQ3R
- 자바
- SQL
- 4A피드백
- ChatGPT
- 프로그래머스
- API
- 스레드동기화
- API명세서
- 날씨API
- 참조변수타입변환
- 성장형마인드셋
- openapi
- 백준
- 스프링
- 동전교환알고리즘
- 재귀적사고
- 프로젝트
Archives
- Today
- Total
개발 공부용
큐 | 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
다음 주어진 조건에 따라 n개의 수를 처리하고 8자리의 암호를 생성한다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.
입력
- 10개의 테스트 케이스
- 테스트 케이스의 첫 줄은 테스트 케이스 번호
- 두번째 줄은 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
풀이
from collections import deque
for i in range(10):
N = int(input().strip())
nums = deque(map(int, input().split()))
j = 0
while True:
#1 ~ 5를 순차적으로 빼고 다시 1로 돌아옴
if j > 4: #j==6부터는 다시 1로
j = 1
else: j += 1
#가장 왼쪽의 요소를 pop
num = nums.popleft()
if num - j <= 0: #num이 0이하가 되는 경우
num = 0 #0으로 고정
nums.append(num) #가장 오른쪽에 append후 종료
break
else:
num -= j
nums.append(num)
result = " ".join(map(str, nums))
print(f"#{N} {result}")
큐를 이용하면 간단하게 풀 수 있는 문제
1~5를 빼는 것을 반복해야 하므로 if 문으로 j>4 인 경우 다시 1로 돌아가도록 작성
가장 왼쪽 요소를 popleft하고 -j 하여 append 한다
-j 한 값이 0이하인 경우 num = 0이 되고 답을 출력한 뒤 해당 테스트 케이스를 종료한다.
'코딩 테스트' 카테고리의 다른 글
| 카운팅 정렬 | 1221. [S/W 문제해결 기본] 5일차 - GNS (0) | 2025.11.13 |
|---|---|
| 1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2025.11.13 |
| 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (0) | 2025.11.10 |
| 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (0) | 2025.11.10 |
| 스택 | 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (0) | 2025.11.10 |