관리 메뉴

MOMONOTE

(JAVA) 백준 1193 분수찾기 본문

알고리즘, 코딩테스트/(JAVA)백준

(JAVA) 백준 1193 분수찾기

momo0503 2021. 7. 6. 16:18

문제를 보고 어떻게 풀어나가야 할지 생각해보았다.

짝수 번째 - >아래로 
홀수 번째 -> 위로 

6번째 : 1/6 - 2/5 - 3/4 - 4/3 - 5/2 - 6/1  
7번째 : 7/1 - 6/2 - 5/3 - 4/4 - 3/5 - 2/6 - 1/7 
8번쨰 : 1/8 .....

번호의 총 수? -> 1 2 3 4 5 씩늘어남. 

번호 x 가 주어지고 
x가 1,2,3..의합보다 작거나 같으지는 시점 에서의 -1만큼하고, 

X에서 그만큼만 뺸다. 

그 뺀 수를  작아지는 시점을 기준으로,또 짝수 홀수의 기준으로 

분수를 출력하면 되지 않을까?

 

 

 

 

import java.util.*;

public class Main{
    public static void main(String[] args){
        
  Scanner sc = new Scanner(System.in);
     int X = sc.nextInt();
     sc.close();
        
     int sum = 0;
     int countTemp = 0; //몇번쨰 반복인지 ,홀 짝 나눔
     
      
     while(true){
         countTemp++;
         sum+=countTemp;
         
         if(X<=sum){
             break;
         }
     }   

      int climb = X-(sum-countTemp);  //몇칸 오를지
      
      
   
       if(countTemp%2==0){
           
           int mo = countTemp-climb+1;
           int ja = climb;
           
           System.out.println(ja+"/"+mo);
           
       }else{
           int mo = climb;
           int ja = countTemp-climb+1;
           System.out.println(ja+"/"+mo);
       } 
        
    }
}

홀수번째, 짝수번째에 따라 번호가 아래에서 위로, 위에서 아래로 내려오면서 분모와 분자를 일정한 규칙에 따라 증감시킨다.

 

countTemp   ---> 순환 반복수? 라고 지칭하겠다. 1,2,3... 증가하면서 몇번 반복인지 , 반복이 홀수번째인지 짝수번째인지 정보를 얻는다.

sum ---> 순환반복마다의 합? 이다. 3번째 반복까지의합 - > 1+2+3 = 6  ,  5번째 반복가지의 합 - > 1+2+3+4+5 = 15

 

- X를 입력받는다. 입력받은 X 에 대해 counTemp와 sum을 얻는다. 

- climb는 X가 해당하는 순환반복수 상에서 몇번째 이동할지에 대한 정보이다. 

- 순환 반복수(countTemp) 가 홀수, 짝수 인지에 따라 분모와 분자를 적절히 계산하여 출력한다.

Comments