728x90
문제 바로가기: https://www.acmicpc.net/problem/1193
나의 풀이 FAIL
풀지 못함
다른 사람의 풀이
보미 님
import java.io.*;
public class no1193 {
/**
* 2 #3 4 #5 6
1/1 1/2 1/3 1/4 1/5 …
2/1 2/2 2/3 2/4 … … #은 분모감소 분자증가 (홀수)
3/1 3/2 3/3 … … … 각 대각선 열의 개수 -> 1씩 증가
4/1 4/2 … … … …
5/1 … … … … …
… … … … … …
*/
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
int x = Integer.parseInt(bfr.readLine());
int line =0;
int result =0;
int i=1;
while(true){
if(x <= i* (i+1)/2){ //등차수열 합, n번 라인까지 총 분수의 개수 1+2+3...+n = n(n+1)/2
line = i; // 몇번째 대각라인에 속했는지
result = x-(i-1)*i/2; //i번 대각 라인에 속해있다면, i-1라인까지의 분수 개수를 빼..
break;
}
i++;
}
if(line % 2 == 0){
bfw.write(result+"/"+(line-result+1));
} else bfw.write((line-result + 1)+"/"+result);
bfw.flush();
}
}
성호 님
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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 count = 0;
int line = 0;
while (count < X) {
line++;
count += line;
}
int termIntoLine = X - (count - line);
int numerator, denominator;
if (line % 2 == 0) {
numerator = termIntoLine;
denominator = line + 1 - termIntoLine;
} else {
numerator = line + 1 - termIntoLine;
denominator = termIntoLine;
}
System.out.println(numerator + "/" + denominator);
}
}
호현 님
// 메모리 14232 KB, 시간 128 ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 i = 0;
while (x > 0) x -= ++i;
StringBuilder sb = new StringBuilder();
if (i % 2 == 0) sb.append(x + i).append('/').append(1 - x);
else sb.append(1 - x).append('/').append(x + i);
System.out.println(sb);
}
}
소감
어렵다.
'verdantjuly > 코딩테스트' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 : 평균 일일 대여 요금 구하기 (20240603, MySQL) (0) | 2024.06.03 |
---|---|
프로그래머스 코딩테스트 연습 : 특정 형질을 가지는 대장균 찾기 (20240529, MySQL) (0) | 2024.05.29 |
백준 25206번 : 너의 평점은 (Java, 20240327) (0) | 2024.03.27 |
백준 1924번 : 2007년 (Java, 20240327) (0) | 2024.03.27 |
백준 2445번 : 별 찍기 - 8 (Java, 20240327) (0) | 2024.03.27 |