- [백준 알고리즘] 1193번 분수찾기 Java2020년 06월 15일
- 홀쑥
- 작성자
- 2020.06.15.:22
분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 -> ... 과 같이 지그재그 순서로 차례대로 1~..번 분수라고 한다.
x가 주어졌을 때 x번째 분수를 구하란다.
일단 저 표대로 보려니까 너무 어려워서 그림을 돌려봤다.
피라미드처럼 본다고 그리고 볼 수 있다고 생각하자.
첫번째 라인은 1/1
두번째 라인은 2/1 1/2
세번째 라인은 3/1 2/2 1/3
...
순서는 1
3 2
4 5 6 .. 이다
여기서 발견한 규칙은
짝수 행은 오른쪽에서 왼쪽, 홀수 행은 왼쪽에서 오른쪽으로 순서가 커지고
행 번호 + 1 = 분모 + 분자,
행의 번호와 그 행의 분수의 숫자는 같다.
a : 원하는 분수 번호
cnt : 개수
n : 행 번호
n에 1씩 더할 때 마다 cnt에 n을 더하고 만약 cnt가 a보다 커질 경우(그 행에 원하는 번호 분수가 있을 경우)
짝수 행이라면 오른쪽에서 왼쪽으로 가니 분모는 cnt - a + 1 분자는 a - cnt + n
홀수 행이라면 왼쪽에서 오른쪽으로 가니 분모와 분자를 반대로 주면 된다. 코드는
import java.util.Scanner; public class back1193 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int cnt = 0; int n = 0; while (true) { n++; cnt +=n; if(cnt>=a) { if(n%2==0) { System.out.println(a-cnt+n+"/"+(cnt-a+1)); }else { System.out.println((cnt-a+1)+"/"+(a-cnt+n)); } break; } } } }
이렇게 작성하였다.
'Algorithm & Data Structure > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 1018번 체스판 다시 칠하기 Python (0) 2021.02.16 [백준 알고리즘] 2231번 문제 분해합 구하기 Python (0) 2021.02.02 [백준 알고리즘] 2869번 달팽이는 올라가고 싶다 Java (0) 2020.06.15 [백준 알고리즘] 2839번 설탕 배달 Java (0) 2020.06.15 [백준 알고리즘] 1712번 손익 분기점 Java (0) 2020.06.15 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)