문제
설명
문제를 보자마자 선입선출 자료구조인 Queue를 사용하는 전형적인 문제라는 생각이 들었습니다.
큐를 사용해서 로직대로 차근차근 front를 back으로 넣어주다가, front에서 수를 뺐을 때 0 이하인 경우 마지막으로 enqueue 후 끝내는 플로우로 코드를 작성하면 됩니다.
코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class SWEA1225_Code {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
for(int tc=1; tc<=10; tc++) {
int T = sc.nextInt();
for(int i=0; i<8; i++) {
q.offer(sc.nextInt());
}
//입력 완료
boolean flag = false; //찾았으면 true, 못 찾았으면 false;
while(!flag) {
for(int n=1; n<=5; n++) { //한 사이클
if(q.peek()-n>0) {
int tmp = q.poll() - n;
q.offer(tmp);
}
else { //암호 생성 가능이면
flag=true;
q.poll();
q.offer(0);
break; //while문 앞에 label 붙여서, 밑의 break문 없이 한 번에 이중 반복문 탈출도 가능함.
}
}
if(flag)
break;
}
sb.append("#"+tc);
while(!q.isEmpty()) {
sb.append(" "+q.poll());
}
sb.append("\n");
}
System.out.println(sb);
}
}
'알고리즘 문제풀이 > SWEA(SW Expert Academy)' 카테고리의 다른 글
[SWEA][JAVA] 1954 : 달팽이 숫자 (0) | 2021.08.30 |
---|---|
[SWEA][JAVA] 1233 - 사칙연산 유효성 검사 (0) | 2021.08.23 |
[SWEA][JAVA]1218 - 괄호 짝짓기 (0) | 2021.08.21 |
[SWEA][JAVA]2805 - 농작물 수확하기 (0) | 2021.08.19 |
[SWEA][JAVA]2001 - 파리 퇴치 (0) | 2021.08.18 |