또 수열 문제다.
이번에는 벌집보다 훨씬 단순한 수열로써 분모와 분자 중 어느 쪽이 값이 증가하고 내려가는 구간인지만 헷갈리지 않으면 쉽게 풀 수 있다.
조건
1. 각 대각선 라인의 분모와 분자 값이 1씩 증가하고 있다.
2. 짝수 라인에는 우상단(분모⬆️분자⬇️), 홀수 라인에서는 좌하단(분자⬆️분모⬇️)으로 이동한다.
풀이
1. while문을 이용해 입력받은 값이 몇번째 라인에 있는지 계산한다.
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
int count = 0;
while ( sum(count) < input ) {
count++;
}
// 자연수의 합 구하는 메서드
public static int sum(int count) {
return ( count * ( count - 1 ) ) / 2;
}
2. count가 홀수라면 분모는 (n-1-최대값과 인풋값의 차) 분자는 (1+최대값과 인풋값의 차)가 된다. 짝수라면 그 반대로.
int difference = sum(count)-input;
int numerator = 0;
int denominator = 0;
if (count%2!=0) {
numerator = (count-1)-difference;
denominator = 1+difference;
} else {
numerator = 1+difference;
denominator = (count-1)-difference;
}
3. 전체 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
int count = 0;
while ( sum(count) < input ) {
count++;
}
int difference = sum(count)-input;
int numerator = 0;
int denominator = 0;
if (count%2!=0) {
numerator = (count-1)-difference;
denominator = 1+difference;
} else {
numerator = 1+difference;
denominator = (count-1)-difference;
}
String result = numerator + "/" + denominator;
System.out.println(result);
}
public static int sum(int count) {
return ( count * ( count - 1 ) ) / 2;
}
}
'CS ﹒ Algorithm > Baekjoon' 카테고리의 다른 글
JAVA백준 문제풀이 (6) 2775: 부녀회장이 될테야 (0) | 2022.07.01 |
---|---|
JAVA백준 문제풀이 (5) 10250:ACM호텔 (0) | 2022.06.30 |
JAVA백준 문제풀이 (4) 2869:달팽이는 올라가고 싶다 (0) | 2022.06.29 |
JAVA백준 문제풀이 (2) 2922:벌집 (0) | 2022.06.27 |
JAVA백준 문제풀이 (1) 1712:손익분기점 (0) | 2022.06.26 |