[백준/실버5/분수찾기/구현]
by 개발하는지호https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
<<풀이>>
이 문제는 누적합을 잘 이용하면 쉽게 구할 수 있는 문제이다.
구현 문제 같은 경우에는 규칙을 찾는 것이 중요하다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int X = in.nextInt();
int cross_count = 1, prev_count_sum = 0;
while (true) {
// 직전 대각선 누적합 + 해당 대각선 개수 이용한 범위 판별
if (X <= prev_count_sum + cross_count) {
if (cross_count % 2 == 1) { // 대각선의 개수가 홀수라면
// 분자가 큰 수부터 시작
// 분자는 대각선상 내의 블럭 개수 - (X 번째 - 직전 대각선까지의 블럭 개수 - 1)
// 분모는 X 번째 - 직전 대각선까지의 블럭 개수
System.out.print((cross_count - (X - prev_count_sum - 1)) + "/" + (X - prev_count_sum));
break;
}
else { // 대각선상의 블럭의 개수가 짝수라면
// 홀수일 때의 출력을 반대로
System.out.print((X - prev_count_sum) + "/" + (cross_count - (X - prev_count_sum - 1)));
break;
}
} else {
prev_count_sum += cross_count;
cross_count++;
}
}
}
}
'코딩테스트' 카테고리의 다른 글
[백준/1152/단어의 개수/브론즈2] (1) | 2024.03.14 |
---|---|
[백준/1141/접두사/실버1] (4) | 2024.03.13 |
[백준/1004/실버3] 어린 왕자 (5) | 2024.03.12 |
[백준/2941/실버5] 크로아티아 알파벳 (7) | 2024.03.05 |
[DP] 1. 계단오르기 (6) | 2024.03.02 |
블로그의 정보
DevSecOps
개발하는지호