본문 바로가기

숨막히는 알고말고/문제 풀이

[SWEA] 암호생성기

👀 문제 설명

문제

로그인해야 문제를 볼 수 있다.

 

✍🏻풀이

큐를 사용해서 풀었다.

큐에 수를 차례대로 넣고, cnt값을 사용해 암호를 생성한다.

cnt의 초기값을 1로 두고, 암호를 생성할 때마다 cnt + 1을 해준다. 만약, cnt가 6보다 크거나 같으면 cnt를 1로 바꾼다. (cnt는 1~5만 가능)

그리고, cnt를 사용해 queue.poll() - cnt가 0보다 크거나 같을 동안 queue.poll() - cnt한 값을 다시 queue에 넣어준다. (맨 뒤로 보내기)

위 과정은 queue.poll() - cnt가 0보다 작거나 같을 때 끝난다.

 

코드

package swea;

// 암호생성기 (https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD&categoryId=AV14uWl6AF0CFAYD&categoryType=CODE&problemTitle=%EC%95%94%ED%98%B8&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 )

import java.util.*;
import java.io.*;

public class SWEA_1225 {

	public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        Queue<Integer> queue = new LinkedList<>();
         
        for (int tc = 1; tc <= 10; tc++) {
            // input
            br.readLine();
            st = new StringTokenizer(br.readLine());
             
            for (int i = 0; i < 8; i++) {
                queue.add(Integer.parseInt(st.nextToken()));
            }
             
            // solve
            int cnt = 1;
            while (true) {
                int minusNum = queue.poll() - cnt;
                 
                if (minusNum <= 0) {
                    queue.add(0);
                    break;
                }
                queue.add(minusNum);
                 
                cnt++;
                if (cnt > 5)
                    cnt = 1;
            }
             
            bw.write("#" + tc + " ");
            while (!queue.isEmpty()) {
                bw.write(queue.poll() + " ");
            }
            bw.newLine();
        }
         
        bw.flush();
        bw.close();
    }

}

'숨막히는 알고말고 > 문제 풀이' 카테고리의 다른 글

[SWEA] 쇠막대기 자르기  (0) 2021.08.05
[Baekjoon] 탑  (2) 2021.08.05
[SWEA] 괄호 짝짓기  (0) 2021.08.05
[SWEA] 파리 퇴치  (0) 2021.08.04
[SWEA] 농작물 수확하기  (0) 2021.08.04