첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
첫째 줄에 분수를 출력한다.
관련 문제 포스팅을 작성하기 앞서, 다른 포스팅 글들을 참고한 결과, 쉬운 문제라는 말들이 많았는데 나는 너무 어려웠다... 30분 잡다가 문제 풀이 포스팅 글들을 읽고도 이해가 안되서 다시 한번 뜯어서 본 결과, 대충 느낌은 알겠는데 정확하게 왜 이러한 공식으로 결과가 도출되는 지 이해가 되지는 않았다.. 정말 문제 제목 그대로 내 분수를 찾을 수 있었던 기회였다... 내일도, 모레도, 3일 4일... 앞으로도 계속 보고 반성해야 할 문제이다. 나한텐 너가... 베를린 장벽이고 38선이였어...😥
규칙 찾기
1) 대각선을 기준으로 확인, 분모 + 분자 = 대각선 칸 수 + 1
이다.
Ex) 1/1 -> 1+1 = 2 ... 대각선 칸수 1개 +1 = 2 !!!
2) 대각선 칸 갯수 기준,
홀수 -> 왼쪽 아래에서 오른쪽 위 방향으로 순서가 진행.
짝수 -> 오른쪽 위에서 왼쪽 아래 방향으로 순서가 진행.
변수 지정
1) 입력 값 : X
2) 대각선 칸 갯수 == 대각선 줄 level : level
3) 입력 값 해당 대각선 줄 직전까지의 누적갯수 : stack
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int X = Integer.parseInt(br.readLine()); // 입력값
int level = 1;
int stack = 0;
String str = "";
while(true){
//
if(X <= level + stack){
if(level%2 == 1){
str=(level-(X-stack-1))+"/"+(X-stack);
break;
}else{
str=(X-stack)+"/"+(level-(X-stack-1));
break;
}
}else{
stack += level;
level++;
}
}
System.out.println(str);
br.close();
}
}