728x90
반응형
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.
[1 사이클]
[암호 도출]
[제약 사항]
주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.
[출력]
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
입력1
9550 9556 9550 9553 9558 9551 9551 9551
2
2419 2418 2423 2415 2422 2419 2420 2415
........
9550 9556 9550 9553 9558 9551 9551 9551
2
2419 2418 2423 2415 2422 2419 2420 2415
........
출력
#1 6 2 2 9 4 1 3 0
#2 9 7 9 5 4 3 8 0
.......
#2 9 7 9 5 4 3 8 0
.......
import java.util.Scanner;
public class Solution {
public int[] solution(int[] arr) {
// 0보다 작을 경우 종료
// 1부터 5까지 빼면 한 사이클 -> arr[0]-i가 0이될때까지 반복
int i = 1;
while (arr[0] - i > 0) {
int tmp=arr[0];
for (int j = 1; j < arr.length; j++) {
arr[j - 1] = arr[j];
}
arr[arr.length-1]=tmp-i;
i++;
if (i == 6)
i = 1;
}
for (int j = 1; j < arr.length; j++) {
arr[j - 1] = arr[j];
}
arr[arr.length - 1] = 0;
return arr;
}
public static void main(String[] args) {
Solution T = new Solution();
Scanner kb = new Scanner(System.in);
for (int i = 1; i <= 10; i++) {
int m = kb.nextInt();
int[] arr = new int[8];
for (int j = 0; j < 8; j++) {
arr[j] = kb.nextInt();
}
System.out.print("#" + i + " ");
for (int x : T.solution(arr)) {
System.out.print(x + " ");
}
System.out.println();
}
}
}
728x90
반응형
'Java > Java 알고리즘 SWEA' 카테고리의 다른 글
[SW 아카데미] 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (0) | 2022.05.27 |
---|---|
[SW 아카데미] 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (0) | 2022.05.27 |
[SW 아카데미] 1221. [S/W 문제해결 기본] 5일차 - GNS (0) | 2022.05.26 |
[SW 아카데미] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2022.05.26 |
[SW 아카데미] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2022.05.26 |