[SWEA] #1225 - 암호생성기

2022. 3. 11. 23:32
728x90
반응형

※ 문제에 대한 저작권은 SW Expert Academy에 있습니다.

💡 출처


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

 

SW Expert Academy

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

swexpertacademy.com

 

💡 문제


[설명]

다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.

1. 8개의 숫자를 입력받는다.

2. 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다. 

3. 다음 첫 번째 수는 2 감소한 뒤 맨 뒤로 보낸다.

4. 그다음 첫 번째 수는 3을 감소하고 맨 뒤로 보낸다.

5. 그다음 수는 4를 감소하고 맨 뒤로 보낸다.

6. 그다음 수는 5를 감소하고 맨 뒤로 보낸다.

이와 같은 작업을 한 사이클이라 한다.

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

[1사이클]
 
[암호 도출]

 

💡 아이디어


Queue를 이용하면 간단하게 문제를 해결할 수 있다.

일단 1을 가지는 변수를 선언한다.

그 후 Queue에서 poll을 한 뒤에 값에서 변수를 빼주고, 다시 Queue에 넣는다.

동시에 1을 가지던 변수는 +1을 해준다.

이 과정을 반복하다가 1을 가지는 변수가 6이 되면 한 사이클이 끝난 것이기 때문에 다시 1로 바꿔주고 과정을 반복한다.

이 과정을 진행하다가 Queue가 0을 가지면 반복을 종료하면 된다.

 

 

💡 소스코드


package SWEA;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class SWEA_P1225_암호생성기 {

	public static void main(String[] args) throws Exception {
		System.setIn(new FileInputStream("./SWEA_INPUT/SWEA_P1225_input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Queue<Integer> queue = new LinkedList<>();

		for (int TC = 1; TC <= 10; TC++) {
			int T = Integer.parseInt(br.readLine());
			String[] str = br.readLine().split(" ");

			for (int i = 0; i < 8; i++)
				queue.add(Integer.parseInt(str[i]));

			int cnt = 1;

			while (!queue.contains(0)) {//queue에 0이 포함될 때까지
				if (cnt == 6)//cnt가 6이면 다시 1로 감소
					cnt = 1;

				if (queue.peek() - cnt < 0) {//queue의 값에서 cnt를 뺐을 때 음수면 0으로 add
					queue.poll();
					queue.add(0);
				} else
					queue.add(queue.poll() - cnt++);//음수가 아니면 cnt를 빼고 add
			}

			System.out.print("#" + TC + " ");//출력
			while (!queue.isEmpty())
				System.out.print(queue.poll() + " ");

			System.out.println("");
			queue.clear();
		}

		br.close();
	}
}

 

💡 결과


728x90
반응형

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[SWEA] #1231 - 중위순회  (0) 2022.03.15
[SWEA] #1226 - 미로1  (0) 2022.03.15
[SWEA] #1221 - GNS  (0) 2022.03.11
[SWEA] #1224 - 계산기3  (0) 2022.03.09
[SWEA] #1220 - Magnetic  (0) 2022.03.09

BELATED ARTICLES

more