[백준 1193]분수찾기 - JAVA 풀이
바로가기
문제
해석
- 숫자 n이 주어졌을 때, 배열의 n번째 값을 찾는 문제
풀이
- 대각선으로 한 칸 이동 할 때마다 숫자가 1씩 늘어난다.
1 - 1/1 2 - 1/2, 2/1 3 - 3/1, 2/2, 1/3 ...
- 각 자리마다 분모 + 분자 합이 같다
1 = 2 2 = 3 3 = 4
- 짝수 일 때는 위에서 아래로(분자가 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();
}
}