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를 걸어 더이상 작업이 수행되지 않도록 해주었습니다. 

 

+ Recent posts