개발 공부 기록

[SWEA 1225번 / JAVA] 암호생성기 본문

PS/Implement

[SWEA 1225번 / JAVA] 암호생성기

나만없서고냥이 2023. 11. 12. 03:13

Question

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


💡 Solution

큐를 이용해서 구현했습니다. 입력받은 8개의 데이터를 큐에 차례대로 넣고, 앞에서부터 데이터를 하나씩 빼서 값을 감소시킨 후 감소시킨 값을 다시 큐의 맨 뒤에 넣는 방식으로 진행합니다.

 

💻 Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class SWEA1225 {
	static Queue<Integer> queue;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb;
		
		for (int i = 1; i <= 10; i++) {
			queue = new LinkedList<>();
			sb = new StringBuilder();
			int tc = Integer.parseInt(br.readLine());
			st = new StringTokenizer(br.readLine(), " ");
			for (int j = 0; j < 8; j++) {
				queue.offer(Integer.parseInt(st.nextToken()));
			}
			solve();
			for (int k = 0; k < 8; k++) {
				sb.append(queue.poll()).append(" ");
			}
			System.out.printf("#%d %s\n", i, sb);
		}

	}
	
	public static void solve() {
		while (true) {
			if (isCycleEnd() == true) {
				break;
			}
		}
	}
	
	public static boolean isCycleEnd() {
		int decreaseUnit = 1;
		for (int i = 0; i < 5; i++) {
			int current = queue.poll();
			
			int newValue = current - decreaseUnit;
			if (newValue <= 0) {
				queue.offer(0);
				return true;
			} else {
				queue.offer(newValue);
			}
			decreaseUnit++;
		}
		return false;
	}

}