코드는 짧은데 배열 문제에 약해서 다른 분들의 코드들을 많이 찾아보고 내것으로 만드는 데 오래 걸렸다.
가로세로 배열 문제라서 for문을 2번 돌려서 이중배열로 풀어야 하나 했는데 라인으로 해결하니 훨씬 간단했다.
대각선 라인으로 생각하면
1 : 1/1
2 : 1/2 2/1
3 : 3/1 2/2 1/3
4 : 1/4 2/3 3/2 4/1
5 : 5/1 4/2 3/3 2/4 1/5
라인이 홀수일 경우 분모는 1부터 시작하고 점점 커진다. 분자는 라인수부터 점점 작아진다.
라인이 짝수일 경우 분모는 라인의 숫자이고 점점 작아진다. 분자는 1부터 라인수까지 점점 커진다.
X가 주어졌을 때 X가 몇번째 라인에 있는 숫자인지 찾고 X자리를 찾는다.
몇번째 자리에 있는지는 x-i를 통해 찾는다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int X = in.nextInt();
for(int i = 1; i <= 10000000 ; i++) { //i = 라인 수
if(i >= X) {
if(i % 2 == 0) { //짝수 줄에서는 분자: X 분모: 라인수-X+1
System.out.println(X + "/" + (i - X + 1));
} else { //홀수 줄에서는 분자: 라인수-X 분모: X
System.out.println(i - X + 1 + "/" + X);
}
break;
}
X = X - i; //입력값의 자리수를 구하기 위한 식
}
}
}
설명은 주석에...
'Study > 알고리즘' 카테고리의 다른 글
백준 1233번 - 주사위 JAVA (0) | 2022.08.11 |
---|---|
백준 1225번 - 이상한 곱셈 JAVA (0) | 2022.08.10 |
백준 1173번 - 운동 JAVA (0) | 2022.08.04 |
백준 1259번 - 팰린드롬수 JAVA (0) | 2022.08.02 |
백준 1159번 - 농구 경기 JAVA (0) | 2022.07.30 |