노력만이 살길!/알고리즘

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

갱스타 2022. 2. 8. 15:18

1. 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 

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

 

 

SW Expert Academy

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

swexpertacademy.com

 
[제약 사항]

주어지는 각 수는 integer 범위를 넘지 않는다.

마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
 
[입력]

각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.

1
9550 9556 9550 9553 9558 9551 9551 9551

 
[출력]

#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다. 

#1 6 2 2 9 4 1 3 0
 

2. 1225번 암호생성기 JAVA  문제풀이

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 Main {
	static Queue<Integer> q;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=null;
		int T;
//		for(int t=1;t<=10;t++){
			st= new StringTokenizer(br.readLine());
			T = Integer.parseInt(st.nextToken());
			st= new StringTokenizer(br.readLine());
			 q= new LinkedList<>();
			for (int i = 0; i < 8; i++) {
				q.add(Integer.parseInt(st.nextToken()));
			}
			
			recursive();
			
			System.out.printf("#%d ", T);
			for (Integer i : q) { // for문을 통한 전체출력
				System.out.printf("%d ", i);
			}
			System.out.println();

//}
	}

	static void recursive() {

		int temp;
		for (int i = 1; i < 6; i++) {
			temp = q.poll() - i;
			if (temp <= 0) {
				q.add(0);
				return;
			}else
				q.add(temp);
		}
		recursive();
		

	}
}