본문 바로가기
공부-코딩테스트/Java-코딩테스트-편의기능

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

by 령과 2022. 8. 5.

문제

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

 

SW Expert Academy

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

swexpertacademy.com


풀이

큐 자료구조를 활용하면 간단히 풀 수 있는 문제 

cnt를 반복할 때마다 갱신할 때 (cnt+1)%5을 하고 넣을 때 +1하여 사이클 구분없이 1,2,3,4,5,1,2,3,4,5....식으로 돌게 했다.

만약 해당 과정을 수행할 때 0이하의 수가 발생하게 된다면 사이클을 멈추고 마지막 한번 더 작업을 돌아 완성 


코드

class Solution {
	public static void main(String args[]) throws Exception {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T;
		T = 10;
		for (int test_case = 1; test_case <= T; test_case++) {
			int cnt = 0;
			bf.readLine();
			Queue<Integer> table = new LinkedList<>();
			StringTokenizer st = new StringTokenizer(bf.readLine());
			while(st.hasMoreTokens()) {
				table.add(Integer.parseInt(st.nextToken()));
			}
			
			while((table.peek()-(cnt%5+1))>0) {
				int tmp = table.poll();
				tmp-=(cnt+1);
				table.add(tmp);
				cnt=(cnt+1)%5;
			}
			table.poll();
			table.add(0);
			
			sb.append("#"+test_case+" ");
			while(!table.isEmpty()) {
				sb.append(table.poll()+" ");
			}			
			sb.append("\n");
		}
		
		System.out.println(sb);
	}
}

댓글