Contents

[백준 1193]분수찾기 - JAVA 풀이

   Aug 18, 2021     1 min read     - Comments

바로가기

문제

문제


해석

  • 숫자 n이 주어졌을 때, 배열의 n번째 값을 찾는 문제

풀이

1

  1. 대각선으로 한 칸 이동 할 때마다 숫자가 1씩 늘어난다.
     1 - 1/1   
     2 - 1/2, 2/1   
     3 - 3/1, 2/2, 1/3 ...   
    
  2. 각 자리마다 분모 + 분자 합이 같다
     1 = 2   
     2 = 3   
     3 = 4 
    
  3. 짝수 일 때는 위에서 아래로(분자가 1로 시작), 홀수 일 때는 아래서 위로 이동(분모가 1로 시작)한다.

코드

import java.io.*;

public class Main
{  
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n = Integer.parseInt(br.readLine()), count = 1, sum = 0, a = 0, b = 0;
        
        //순번을 찾기 위한 부분
        //1 = 첫번째 2,3 = 두번째 4,5,6 = 세번째 ...     
        while(n > sum+count){
            sum += count++;
        }
        n -= sum; //순번 안에 몇번째 위치인지 찾는 부분 
                  //5가 주어지면 2번의 2번째 위치
        
        a = count - n + 1;
        b = n;
        
        if(count % 2 == 0)
            bw.write(b+"/"+a);
        else
            bw.write(a+"/"+b);       
        
        
        bw.flush();
        bw.close();
    }
}