본문 바로가기

Algorithm/SWEA

[SWEA-1225][큐] 암호생성기 - Java

앞에 놈을 빼서 일련의 연산을 해준 뒤 다시 뒤에 넣는 동작을 하기 때문에 기본적인 큐 활용 문제입니다.

규칙을 잘 생각해서 코드를 짜고 언제 반복문을 나갈지 조금만 생각해보면 쉽게 풀 수 있답니당.

 

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