1) Buffered를 이용한 풀이
● 변수 설정
가. 입력받을 수 N
나. 몇 번째 대각선인지 나타내주는 T
- 첫 번째 대각선부터 시작하기 때문에 1로 초기화
다. 해당 대각선까지의 모든 원소 갯수 Max (T=3이라면, T=1 ~3 까지 모든 원소는 6개, 즉 MAX = 6)
- 첫 번째 대각선의 원소 갯수는 1이기 때문에 1로 초기화
● top과 bot 값을 구해주는 식은 노가다로 찾아냈다...
- 테스트 케이스 3개 정도를 참고해서 비교해가며 찾았다.
- 사용가능한 변수 T, N, Max가 3개였기 때문에 가능했던 것 같다.
import java.io.*;
public class baek_1193 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int max = 1;
int t = 1;
while (true) {
// n이 1이라면 아래의 식들을 진행할 필요가 없기 때문에 바로 1/1 출력 후 break
if (n == 1) {
System.out.println("1/1");
break;
}
// 몇 번째 대각선인지 알아내기 위해 t를 계속해서 더해주고 max 값이 입력 값 n을 넘을 때까지 진행
max = (t+1) + max;
t++;
// 구해준 max 값이 입력 값 n을 넘는다면 즉, 입력 값이 t번째 대각선에 포함되있다는 것을 의미.
if (max >= n) {
// t가 짝수라면 ?
if (t % 2 == 0) {
int top = (n + t) - max;
int bot = (max - n) + 1;
System.out.println(top + "/" + bot);
break;
// t가 홀수라면 ?
} else {
int top = (max - n) +1;
int bot = (n + t) - max;
System.out.println(top + "/" + bot);
break;
}
}
}
}
}
'알고리즘 정리' 카테고리의 다른 글
백준 1712번[수학] 손익분기점 (0) | 2021.10.26 |
---|---|
백준 2292번[수학] 벌집 (0) | 2021.10.26 |
백준 1316번[문자열] 그룹 단어 체커 (0) | 2021.10.20 |
백준 2941번[문자열] 크로아티아 알파벳 (0) | 2021.10.20 |
백준 5622번[문자열] 다이얼 (0) | 2021.10.20 |