import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ1193_v1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int X = Integer.parseInt(br.readLine()); // 입력값
int x = 1; // 분모
int y = 1; // 분자
int count = 1; // 횟수
boolean goingUp = true; // 대각선 방향. true면 up, false면 down
while (count < X) {
if (goingUp) {
x--;
y++;
if (x == 0) {
x = 1;
goingUp = false;
}
} else {
x++;
y--;
if (y == 0) {
y = 1;
goingUp = true;
}
}
count++;
}
System.out.println(x + "/" + y);
br.close();
}
}
# 입/출력 결과
# 과정
1. 입력은 BufferedReader 사용
2. int X에 입력값 받기. (몇번째 분수)
3. 분모, 분자, 횟수는 각 x, y, count로 선언하고 1로 초기화.
4. 지그재그 대각선으로 방향이므로 boolean 값으로 나타내기.
5. while문 사용해서 X가 count 보다 크면 true로 계속 반복. 작으면 false.
- if-else문으로 goingUp의 boolean값으로 실행.
- goingUp이 ture면 x--, y++ 그리고 x가 0이면 x는 1로 초기화하고,
- goingUp을 false로 처리.
- goingUp이 false면 x++, y-- 그리고 y가 0이면 y는 1로 초기화하고,
- goingUp을 true로 처리.
- while문 블럭 마지막에 count++로 횟수 증가 시키기.
6. while문 아래에 x + "/" + y 로 분수 출력
7. BufferedReader .close() 해주기.
# 메모
규칙을 알아냈지만 내가 생각한대로 코드가 작성되지 않았다. 결국 내가 작성한 코드를 chat-gpt한테 알려준 다음, 나의 어느 부분에서 막힌 것인지와 리팩토링을 해달라고 요청했다.
chat-gpt는 boolean으로 지그재그 순서를 표현했다. 내가 찾아낸 규칙이 대각선 방향으로 하여 값이 증가되고 감소되는 거였는데, 방향을 boolean으로 한 것이었다. 왜 나는 이 부분을 생각하지 못하였는지 아쉬웠다. 문제를 풀려고 한시간 넘게 생각했는데 말이다.