https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[제약 사항]
주어지는 각 수는 integer 범위를 넘지 않는다.
마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고, 그 다음 줄에는 8개의 데이터가 주어진다.
[출력]
#부호와 함께 테스트케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
import java.util.Scanner;
public class Cipher_generator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int T = 10;
int[] arr;
int temp;
for (int t = 0; t < 10; t++) {
sb.append("#" + sc.nextInt() + " ");
arr = new int[8];
for (int i = 0; i < 8; i++) {
arr[i] = sc.nextInt();
}
while (arr[7] != 0) {
for (int i = 1; i <= 5; i++) {
temp = arr[0] - i;
for (int j = 0; j < 7; j++) {
arr[j] = arr[j + 1];
}
if (temp > 0)
arr[7] = temp;
else {
arr[7] = 0;
break;
}
}
}
for (int i = 0; i < 8; i++) {
sb.append(arr[i] + " ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
배열이 마지막 원소가 0이 되면 작업을 중단하므로 while 문의 조건으로 arr[7] != 0 을 주었습니다.
배열의 첫 원소에서 i를 뺀 값을 temp 변수에 저장해두고
두번째원소부터 마지막 원소까지 한칸씩 당겨줍니다.
마지막 원소에 temp 값을 저장해주어 문제에서 원하는 작업을 수행해 주었습니다.
한 싸이클이 5회의 작업으로 이루어 져있으므로 위의 작업을 i = 1~5까지 반복수행하다가
마지막 원소에 대입 될 temp가 0보다 크지 않으면 마지막 원소에 0을 대입하고 break를 걸어 더이상 작업이 수행되지 않도록 해주었습니다.
'문제해결 > SWExpertAcademy' 카테고리의 다른 글
SWExpertAcademy 1861번-정사각형 방(JAVA) (0) | 2021.08.06 |
---|---|
SWExpertAcademy 3499번-퍼펙트 셔플(JAVA) (0) | 2021.08.06 |
SWExpertAcademy 1218번-괄호 짝짓기(JAVA) (0) | 2021.08.05 |
SWExpertAcademy 1289번-원재의 메모리 복구하기(JAVA) (0) | 2021.08.05 |
SWExpertAcademy 2001번-파리 퇴치(JAVA) (1) | 2021.08.04 |