본문 바로가기
공부/알고리즘

[SWEA]1225_암호생성기 JAVA 풀이

by happyeuni 2022. 2. 8.

https://swexpertacademy.com/main/talk/solvingClub/problemView.do

 

SW Expert Academy

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

swexpertacademy.com

 

입력 예시로 나온 값이 4자리 수의 큰 정수여서 처음에 문제 이해를 잘못한건가 헷갈렸다.

그냥 큰 값일 뿐이니 혹시 헷갈리신 분은 참고 바란다.

 

풀이 : 

맨 앞에 있는 수를 1 빼서 맨 뒤로 넣고 그다음 은 2 빼고 하는 방식인데

큐를 이용하여 풀었다. for문의 인덱스 값이 빼야하는 값의 크기와 맞아 떨어져서 그대로 빼줬다. 

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 Solution_1225 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		for(int tc = 1;tc<=10;tc++) {
			int n = Integer.parseInt(br.readLine());
			Queue<Integer> queue = new LinkedList<Integer>();
			StringTokenizer st = new StringTokenizer(br.readLine());
			for(int i=0;i<8;i++) {
				queue.offer(Integer.parseInt(st.nextToken()));
			}
			
			Loop: while(true) {
				int a;
				for(int i=1;i<=5;i++) {
					a = queue.poll();
					if(a-i<=0) {
						queue.offer(0);
						break Loop;
					}
					queue.offer(a-i);
				}
			}
			
			
			sb.append("#"+ n+" ");
			
			for(int i=0;i<8;i++) {
				sb.append(queue.poll()+" ");
			}
			sb.append("\n");
		}
		System.out.println(sb);
		
	}

}

댓글