본문 바로가기
Problem Solving/SWEA

[SWEA] 1225. 암호생성기

by 테리는당근을좋아해 2020. 2. 5.

문제

8자리 숫자가 입력되었을 때, 암호를 구하는 문제

 

1) 8개의 숫자를 입력 받음

 

2) 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로, 다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소.(1 cycle)

 

3) 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램 종료. 이 때, 8자리 수가 암호가 됨

 

풀이방법

FIFO(First In First Out) 구조를 가지므로, 큐를 이용해 문제를 풀고 분기 조건은 큐의 숫자가 0보다 작거나 같아질 때.

 

소스코드

package samsung;

import java.util.*;

public class s_1225 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		for(int t = 1; t <= 10; t++) {
			int x = sc.nextInt();
			Queue <Integer> q = new LinkedList<>();
			int minus = 1;
			for(int i = 0; i < 8; i++) {
				int tmp = sc.nextInt();
				q.add(tmp);
			}
			
			while(true) {
				int tmp = q.poll();
				tmp -= minus;
				minus++;
				if(minus == 6)
					minus = 1;
				if(tmp <= 0) {
					tmp = 0;
				}
				q.add(tmp);
				if(tmp == 0)
					break;
			}
			System.out.print("#" + t + " ");
			while(!q.isEmpty()) {
				int tmp = q.poll();
				System.out.print(tmp + " ");
			}
			System.out.println();
		}
	}
}

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA] 1284. 수도 요금 경쟁  (0) 2020.02.05
[SWEA] 1228. 암호문1  (0) 2020.02.05
[SWEA] 1204. 최빈수 구하기  (0) 2020.02.05
[SWEA] 1961. 숫자 배열 회전  (0) 2020.01.29
[SWEA] 1966. 숫자를 정렬하자  (0) 2020.01.29

댓글