으하하 공부일기
[SWEA] - 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (D3) 본문
[문제]
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.


주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.
[출력]
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.

문제 풀기
1225. [S/W 문제해결 기본] 7일차 - 암호생성기
[풀이]
- Queue를 구현하여 풀이
- 선언 방법 → Queue<Element> queue = new LinkedList<>();
- 사용한 메서드
- offer() - 값 추가에 성공하면 true, 실패하면 false 반환. (add()는 실패하면 Exception 발생)
- poll() - 첫번째 값을 반환하고 제거, 비어있다면 null 반환. (remove는 첫번째 값 제거)
예외 발생 | 값 리턴 | |
추가(enqueue) | add(e) | offer(e) |
삭제(dequeue) | remove() | poll() |
검사(peek) | element() | peek() |
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
for(int tc=1; tc<=10; tc++) {
int n = sc.nextInt();
Queue<Integer> q = new LinkedList<Integer>();
for(int i=0; i<8; i++) q.offer(sc.nextInt());
int temp = 1;
while(temp != 0) {
for(int i=1; i<6; i++) {
temp = q.poll();
temp -= i;
if(temp <= 0) temp = 0;
q.offer(temp);
if(temp == 0) break;
}
}
System.out.print("#" + n + " ");
for(int i=0; i<8; i++) System.out.print(q.poll() + " ");
System.out.println();
}
}
}
'SWEA > D3' 카테고리의 다른 글
[SWEA] - 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (D3) (0) | 2022.04.26 |
---|---|
[SWEA] - 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (D3) (0) | 2022.04.26 |
[SWEA] - 1221. [S/W 문제해결 기본] 5일차 - GNS (D3) (0) | 2022.04.26 |
[SWEA] - 1220. [S/W 문제해결 기본] 5일차 - Magnetic (D3) (0) | 2022.04.26 |
[SWEA] - 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (D3) (0) | 2022.04.25 |