ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 1193번] 분수찾기
    Algorithm/기타 2019. 12. 27. 20:58

    백준알고리즘 1193번 : 분수찾기

     

    어떻게 접근하는 지 알게되고나면 어렵지 않은 문제라고 생각한다.

    그러나 언제나 그 접근 방법이 어렵다.

     

    분모와 분자의 합을 S라고 하자,

    이 X를 기준으로 1행(혹은 1열)을 보게되면, {2, 3, 4, 5,....} 와 같이 한 개씩 늘어나는 것을 확인할 수 있다.

    그리고 행을 기준으로 왼쪽 아래의 대각선으로 한칸씩 내려가면,

    하나의 대각선은 모두 동일한 S값을 갖고 있음을 알 수 있다.

     

    그렇다면 우리가 구하고자하는 N번째 수가 1행의 몇 번째 열에 해당하는 대각선에 있는지 알 수 있다면,

    적절한 계산을 통해 구할 수 있을 것이다.

     

    각 대각선의 길이는 1, 2, 3...순으로 1씩 증가하는 등차수열이므로,

    등차수열의 합 공식 n(n+1)/2  을 이용하여 대각선 길이의 총 합이 구하고자하는 X 값보다 커지는 지점을 확인하고,

    이를 보정해주면 되겠다.

     

     

    풀이 과정


    1. 등차수열의 합 n(n+1)/2 공식을 이용하여,
      대각선의 총 합이 구하고자하는 X보다 크거나 같을 때의 대각선 길이 n을 구한다.
      X는 즉 n번째 대각선 어딘가에 있을 것이며, 이를 보정해주어야한다.
    2. 대각선의 길이 n이 짝수면, 첫 row(마지막 column)부터 셈이 이뤄지고
       대각선의 길이 n이 홀수면, 마지막 row(첫 column)부터 셈이 이뤄진다.
    3. 이에 맞추어 적절한 출력을 해준다.

     

     

     

     

    소스 ▽

    더보기
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    
    		int num = sc.nextInt();
    		int count = 0;
    		int length = 0;//대각선의 길이
    		while (count<num) { 
    			length++;
    			count = length *(length+1) / 2;
    		}//대각선의 총 합이 구하고자하는 수의 번째보다 크거나 같으면 stop.
    		//즉 우리의 num은 마지막 length만큼의 대각선 사이에 있을 것이다.
    
    		//해당 대각선까지의 총함 - 구하고자하는 X번째 만큼을 보정해주어야한다.
    		int move = count-num;
    		//length가 짝수면, 첫 row(마지막 column)부터 셈이 이뤄지고,
    		//length가 홀수면, 마지막 row(첫 column)부터 셈이 이뤄진다. 
    		if (length%2==0) {
    			System.out.println((length-move)+"/"+(1+move));
    		}else {
    			System.out.println((1+move)+"/"+(length-move));
    		}
    	}
    
    }
    

     

     

     

    Summary


    등차수열의 합 S =n(n+1)/2

     

     

     

    'Algorithm > 기타' 카테고리의 다른 글

    [백준 10798번] 세로읽기  (0) 2019.12.30
    [백준 11050번] 이항 계수 1  (0) 2019.12.28
    [백준 1453번] 피씨방 알바  (0) 2019.12.25
    [백준 1977번] 완전제곱수  (0) 2019.12.20
    [백준 4344번] 평균은 넘겠지  (0) 2019.12.17

    댓글

Designed by Tistory.