알고리즘/SW Expert Academy

[JAVA] SWEA 8822번 홀수 중간값 피라미드1

Dogvelop 2020. 10. 23. 10:02

문제

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW37cfmqC7YDFATy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 두 정수 N,X(2≤N≤105,1≤X≤2N-1)이 공백 하나로 구분되어 주어진다.

 

 

 

출력

각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,

각 테스트 케이스마다 N층에 있는 벽돌에 X가 적힐 수 있으면 1을, 아니면 0을 출력한다.

 

 

 

풀이과정

1. N, X 를 입력받고 규칙을 찾는다.

 

2. X가 제일 처음숫자 1, 마지막숫자 2*N - 1 만 아니면 그 사이의 모든 숫자가 피라미드의 탑에 올 수 있다.

 

if (X == 1 || X == 2*N - 1) {
		System.out.println("#" + t + " 0");
} else {
		System.out.println("#" + t + " 1");
}

 

+. 순열을 통해서 과정을 확인해보고 규칙을 찾자. 

++. 순열로 1층의 모든 경우의 수를 구해서 탑의 숫자를 구하게 되면 런타임에러 오류가 발생한다.

 

 

 

Solution

 

import java.util.*;
import java.io.*;

public class SWEA_8822_홀수중간값피라미드1 {

	public static int T, N, X;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		T = Integer.parseInt(br.readLine());
		
		for(int t=1; t<=T; t++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			N = Integer.parseInt(st.nextToken());
			X = Integer.parseInt(st.nextToken());
			
			if (X == 1 || X == 2*N - 1) {
				System.out.println("#" + t + " 0");
			} else {
				System.out.println("#" + t + " 1");
			}
		}

	}

}