-
[백준] 1193 분수찾기ALGORITHM/BOJ 2022. 2. 6. 22:18
https://www.acmicpc.net/problem/1193
2022-02-06
123456789101112131415161718192021222324252627282930313233343536import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main1193 {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(bf.readLine().trim());int X = Integer.parseInt(st.nextToken());StringBuilder sb = new StringBuilder();int T = 1; // 라인int base = 1; // 기준 번호while(true) {if(X >= base && X < base+T) {// (분모+1)/(분자-1)if(T % 2 == 0) { //라인이 짝수 : 기준 번호가 기준부터 오름차순sb.append((1+(X-base))).append("/").append((T-(X-base)));break;} else { // 라인이 홀수 : 기준번호 + T 부터 내림차순int tmp = base + T - 1;sb.append(1+(tmp-X)).append("/").append(T-(tmp-X));break;}} else {base += T;T++;}}System.out.println(sb.toString());}}cs #문제풀이
base라는 기준 숫자를 기준으로 대각선 한 줄에 X가 속해져있는지 먼저 찾은 후, 그 범위를 찾으면 짝수/홀수 경우의 수를 나눠서 계산했다.
짝수는 base를 기준으로 홀수는 base+T-1을 기준으로 해당번호를 찾아서 분모, 분자를 찾았다.
다른 사람 풀이를 보다보니 조금 더 간단한 방법이 있었다.
주어진 수 X를 기준으로 num++을 빼면서(각 라인에 있을 수 있는 숫자의 총 갯수) 어떤 라인에 있는지 체크하고 그 라인의 몇 번째인지 바로 계산할 수 있었다.
그리고, 짝수의 경우 위에서부터 카운팅해서 분모가 X, 분자가 (num+1-X)가 되고,
홀수의 경우 아래에서부터 카운팅해서 분자가 (num+1-X), 분모가 X가 된다.
12345678910111213141516171819202122232425262728import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main1193_2 {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(bf.readLine().trim());int X = Integer.parseInt(st.nextToken());StringBuilder sb = new StringBuilder();int num = 1; // 카운트while(X > num) {X -= num++;}if(num % 2 == 0) {sb.append(X).append("/").append(num+1-X);} else {sb.append(num+1-X).append("/").append(X);}System.out.println(sb.toString());}}cs 'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 1018 체스판 다시 칠하기 (0) 2022.06.19 [백준] 10799 쇠막대기 (0) 2022.05.08 [백준] 1339 단어 수학 (0) 2022.02.05 [백준] 7568 덩치 (0) 2022.02.02 [백준] 4991 로봇 청소기 (0) 2021.12.11