앞에 놈을 빼서 일련의 연산을 해준 뒤 다시 뒤에 넣는 동작을 하기 때문에 기본적인 큐 활용 문제입니다.
규칙을 잘 생각해서 코드를 짜고 언제 반복문을 나갈지 조금만 생각해보면 쉽게 풀 수 있답니당.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = 10;
for(int test_case = 1; test_case <= T; test_case++) {
int n = sc.nextInt();
Queue<Integer> q = new LinkedList<Integer>();
for(int i = 0; i< 8; i++) {
q.offer(sc.nextInt());
}
outer:
while(true) {
for(int i = 1; i<= 5; i++) {
int front = q.poll();
front -= i;
if(front < 1) front = 0;
q.offer(front);
if(front == 0) break outer;
}
}
System.out.print("#" + test_case + " ");
while(!q.isEmpty()) {
System.out.print(q.poll() + " ");
}
System.out.println();
}
}
}
문제에서 요구하는 연산을 잘 생각하고 반복문 안에서 구현해줌미다.
D3정도는 아닌거 같네여.
Queue<E> q = new LinkedList<>();
LinkedList로 Queue를 구현한 것. Queue가 상위 타입
> Queue에 선언된 메소드만 사용 가능하다.
자바 공부를 열심히 합시다
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA-9229][DFS] 한빈이와 Spot Mart - Java (0) | 2020.08.03 |
---|---|
[SWEA-1223][스택] 계산기2 - Java (0) | 2020.08.02 |
[SWEA-1218][스택] 괄호 짝짓기 - Java (0) | 2020.07.30 |
[SWEA-1210] Ladder1 - Java (0) | 2020.07.28 |
[SWEA-1208] Flatten - Java (0) | 2020.07.28 |