Notice
Recent Posts
Link
- Today
- Total
hye-log
[SWEA]1225번 암호생성기(JAVA) 본문
0. 문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD
1. 문제 설명
1) 8개의 숫자를 입력 받음
2) 첫 번째 숫자를 1 감소하고 맨 뒤로 보내고, 두 번째 숫자를 2 감소하고 맨 뒤로 보내고, ... 이 과정을 반복
3) 감소한 숫자가 0이 되면 프로그램이 종료되고, 이 때의 8자리 숫자 값이 암호가 됨
4) 암호 출력
2. 입출력
// input
1
9550 9556 9550 9553 9558 9551 9551 9551
2
2419 2418 2423 2415 2422 2419 2420 2415
........
// output
#1 6 2 2 9 4 1 3 0
#2 9 7 9 5 4 3 8 0
.......
3. 코드
import java.util.*;
public class swea1225 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = 10; // 테스트 케이스의 개수
for(int t = 1; t <= T; t++) {
int tc = sc.nextInt();
Queue<Integer> q = new ArrayDeque<Integer>(); // 큐 생성
for(int i = 0; i < 8; i++) { // 처음에는 스택에 저장
q.offer(sc.nextInt());
}
int k = 1;
boolean flag = false;
while(true) {
if(flag == true) {
break;
}
int temp = q.peek(); // 제일 위에 있는 수
q.poll(); // 하나 꺼내기
if(temp - k > 0) { // temp - k가 0보다 크면 그대로 빼기
temp -= k;
} else { // temp - k 가 0이거나 0보다 작으면 0으로
temp = 0;
flag = true;
}
q.offer(temp); // k만큼 빼서 넣기
k++; // k 증가
if(k > 5) { // k가 5보다 크면 한 사이클 종료이므로 1 감소부터 시작
k -= 5;
}
}
// 출력
System.out.printf("#%d ", t);
while(!q.isEmpty()) { // 비어있을 때까지
System.out.print(q.poll() + " ");
}
System.out.println();
}
}
}
실행 결과
4. 회고
1) FIFO 구조가 필요하므로 queue 사용
2) 감소한 수가 0일 때까지 반복하는 while 문으로 구
5. Github
https://github.com/iihye/Algorithm/blob/main/SWEA/swea1225.java
728x90
'CodingTest > SWEA' 카테고리의 다른 글
[SWEA]1209번 Sum(JAVA) (0) | 2023.08.07 |
---|---|
[SWEA]1247번 최적 경로(JAVA) (0) | 2023.08.07 |
[SWEA]1218번 괄호 짝짓기(JAVA) (0) | 2023.08.07 |
[SWEA]6808번 규영이와 인영이의 카드게임(JAVA) (0) | 2023.08.06 |
[SWEA]2001번 파리 퇴치(JAVA) (0) | 2023.08.06 |
Comments