반응형
츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 1225번 암호생성기 자바(Java)
1) 난이도 : D3
2) 문제번호 : 1225번
3) 문제 출처
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD
2. 문제
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.
[1 사이클]
[암호 도출]
3. 제약사항
주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
4. 입력
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.
5. 출력
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
6. 풀이
- 큐를 구현하여 풀었다.
- 큐를 입력받고, 이 문제의 핵심은 큐를 poll해서 첫번째 때는 1, 두번째는 2 세번쨰는 3, ... 5까지 빼는 것이 1사이클
7. 소스 코드
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int tc = 1; tc <= 10; tc++) {
// 테스트케이스 입력
int T = sc.nextInt();
Queue<Integer> que = new LinkedList<>();
//큐 입력
for (int i = 0; i < 8; i++) {
int v = sc.nextInt();
que.add(v);
}
int value = 1;
while (value!=0) {
for (int i = 1; i < 6; i++) {
value = que.poll();
value -= i;
if (value <= 0) {
value = 0;
}
que.offer(value);
if(value==0) break;
}
}
System.out.print("#" + tc + " ");
for (int i = 0; i < 8; i++) {
int a = que.poll();
System.out.print(a + " ");
}
System.out.println();
}
}
}
반응형
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1948번 날짜 계산기 자바(Java) (0) | 2021.02.05 |
---|---|
[SW expert Academy] SWEA 2007번 패턴 마디의 길이 자바(Java) (2) | 2021.02.05 |
[SW expert Academy] SWEA 1288번 새로운 불면증 치료법 자바(Java) (0) | 2021.02.05 |
[SW expert Academy] SWEA 3499번 퍼펙트 셔플 자바(Java) (0) | 2021.02.05 |
[SW expert Academy] SWEA 5432번 쇠막대기 자르기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 1218번 괄호 짝짓기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 5431번 민석이의 과제 체크하기 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1974번 스도쿠 검증 자바(Java) (0) | 2021.02.03 |
최근댓글