알고리즘/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");
}
}
}
}