8개의 숫자를 앞에서부터 차례대로 1~5까지 감소시키고 맨앞의 원소를 감소시키면 감소된값을 다시 tail 로 붙이는 작업을 반복한다. 이러한 과정을 반복하기때문에 Queue를 사용해서 풀었다.
1~5까지 감소시키는 과정이 한 싸이클이다. 이렇게 계속 싸이클을 진행시키다가 0보다 같거나 작아지는 원소가 발생할때 이 원소를 0으로 유지한다음 종료시킨다.
package com.ssafy.off;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class SWEA_1225 {
static int[] password;
private static void solve(int[] password) {
Queue<Integer> q = new LinkedList<>();
for (Integer item : password) {
q.add(item);
}
while(true) {
//한사이클 1~5감소
for (int i = 1; i <= 5; i++) {
int head = q.poll();
if(head-i <= 0) {
q.add(0);
for (Integer ele : q) {
System.out.print(ele+" ");
}
return;
}else {
q.add(head-i);
}
}
}
}
public static void main(String[] args) {
//8개의 숫자를 1~5까지 감소시키는게 한 사이클
//0보다작아질때 0으로 유지하고 종료 -> 이때 8자리 암호
Scanner sc = new Scanner(System.in);
for(int t = 0; t < 10; t++) {
int tc = sc.nextInt();
password = new int[8];
for (int i = 0; i < 8; i++) {
password[i] = sc.nextInt();
}
System.out.print("#" + tc+" ");
solve(password);
System.out.println();
}
}
}
'Algorithm' 카테고리의 다른 글
[SWEA] JAVA - 1873 상호의 배틀필드 (0) | 2021.02.06 |
---|---|
[SWEA] JAVA - 1223 계산기2 (0) | 2021.02.05 |
[SWEA] JAVA - 1218 괄호 짝짓기 (0) | 2021.02.05 |
[SWEA] JAVA - 5432.쇠막대기 자르기 (0) | 2021.02.05 |
[백준] Python - 1316.그룹단어체커 (0) | 2021.02.04 |