1225. [S/W 문제해결 기본] 7일차 - 암호생성기 D3
다음 주어진 조건에 따라 n개의 수를 처리하면 8자리의 암호를 생성할 수 있다.
- 8개의 숫자를 입력 받는다.
- 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로 보낸다.
다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨 뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소한다.
이와 같은 작업을 한 사이클이라 한다.
- 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램은 종료된다. 이 때의 8자리의 숫자 값이 암호가 된다.

[1 사이클]

[암호 도출]
[제약 사항]
주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
[입력]
총 10개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 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.*;
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int i = 1; i <= 10; i++) {
int number=Integer.parseInt(br.readLine());
int arr[] = new int[8];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i2 = 0; i2 < 8; i2++) {
arr[i2]=Integer.parseInt(st.nextToken());
}
boolean condition=true;
while(condition) {
for (int i3 = 1; i3 <= 5; i3++) {
int tmp=arr[0]-i3;
for (int j = 1; j <= 7; j++) {
arr[j-1]=arr[j];
}
arr[7]=tmp;
if(tmp<=0) {
arr[7]=0;
condition=false;
break;
}
}
}
System.out.print("#"+number+" ");
for (int i4 = 0; i4 <8; i4++) {
System.out.print(arr[i4]+" ");
}
System.out.println();
}
br.close();
}
}
'SWEA(SWExpertacAdemy)' 카테고리의 다른 글
| [SWEA] 3456. 직사각형 길이 찾기 D3 (자바) (1) | 2025.05.14 |
|---|---|
| [SWEA] 3314. 보충학습과 평균 D3 (자바) (0) | 2025.05.14 |
| [SEWA] 6913. 동철이의 프로그래밍 대회 (자바) (0) | 2025.05.13 |
| [SWEA] 5601. [Professional] 쥬스 나누기 (자바) (0) | 2025.05.12 |
| [SEWA] 5431. 민석이의 과제 체크하기 (자바) (0) | 2025.05.12 |