문제
알고리즘 고민
2022.03.10 - [Algorithm/BOJ] - [BOJ] 2292번 : 벌집 (JAVA/자바)
위의 문제와 푸는 방법이 유사 했다. 패턴을 찾고 패턴에 해당하는 순번의 숫자를 찾은 후 데이터를 처리해주면 된다.
다만, 마지막 값을 출력할때 순서 차이가 있어 조금 달랐다.
출력되는 값의 순서를 확인해보면 다음과 같은 순서가 존재했다.
또한, 각 대각선의 맨위 값에서 부터 확인해보면 분자는 1부터 1, 2, 3, 4, 5 까지 증가하고 분모는 1, 2, 3, 4, 5에서 1까지 순차적으로 감소한다.
먼저, 어느 대각선에 존재하는 순서의 숫자인지 확인하기 위해서 n 값에 순차적으로 1, 2, 3, 4, 5씩 더해주면서 찾고, 그 다음으로는 대각선의 몇번째에 존재하는 숫자인지 찾았다. 다음으로는 n 번째 대각선의 숫자일때
n % 2 == 0 즉, 짝수번째의 대각선의 숫자라면 위에서부터 홀수번째의 대각선 숫자라면 아래에서부터 이기때문에 서로 출력되는 순서를 반대로 하였다.
JAVA Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
int lo = 1, hi = 1, add = 1;
while (hi < num) {
lo += add;
hi += (++add);
}
int up = num - lo + 1, down = add - (num - lo);
if (add % 2 == 0) {
System.out.print(up + "/" + down);
} else {
System.out.print(down + "/" + up);
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바) (0) | 2022.03.11 |
---|---|
[BOJ] 10250번 : ACM 호텔 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 2292번 : 벌집 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 1712번 : 손익분기점 (JAVA/자바) (0) | 2022.03.10 |