문제
8자리 숫자가 입력되었을 때, 암호를 구하는 문제
1) 8개의 숫자를 입력 받음
2) 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로, 다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소.(1 cycle)
3) 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램 종료. 이 때, 8자리 수가 암호가 됨
풀이방법
FIFO(First In First Out) 구조를 가지므로, 큐를 이용해 문제를 풀고 분기 조건은 큐의 숫자가 0보다 작거나 같아질 때.
소스코드
package samsung;
import java.util.*;
public class s_1225 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int t = 1; t <= 10; t++) {
int x = sc.nextInt();
Queue <Integer> q = new LinkedList<>();
int minus = 1;
for(int i = 0; i < 8; i++) {
int tmp = sc.nextInt();
q.add(tmp);
}
while(true) {
int tmp = q.poll();
tmp -= minus;
minus++;
if(minus == 6)
minus = 1;
if(tmp <= 0) {
tmp = 0;
}
q.add(tmp);
if(tmp == 0)
break;
}
System.out.print("#" + t + " ");
while(!q.isEmpty()) {
int tmp = q.poll();
System.out.print(tmp + " ");
}
System.out.println();
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 1284. 수도 요금 경쟁 (0) | 2020.02.05 |
---|---|
[SWEA] 1228. 암호문1 (0) | 2020.02.05 |
[SWEA] 1204. 최빈수 구하기 (0) | 2020.02.05 |
[SWEA] 1961. 숫자 배열 회전 (0) | 2020.01.29 |
[SWEA] 1966. 숫자를 정렬하자 (0) | 2020.01.29 |
댓글