https://www.acmicpc.net/problem/1193
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int floor = 1; // 몇 번째 층에 있을까?
// 층 수를 구해보자
while(number-floor > 0) {
number -= floor;
floor++;
}
int box = number; // 몇 번째 박스?
int hap = floor+1; // 분모와 분자의 합
int a=0; int b=0; // 분모, 분자
// 홀수층
if(floor%2==1) {
a = box;
b = hap-box;
}
//짝수층
if(floor%2==0) {
b = box;
a = hap - box;
}
System.out.println(b +"/" + a);
}
}
풀이 :
* 사진에서 발견한 조건
홀수층과 짝수층을 나누어서 생각해야한다
- 홀수층은 화살표가 오른쪽으로 짝수층은 화살표가 왼쪽으로
- 각 층 (floor) 가 있고 각 층에 있는 분수들의 분자 와 분모의 합(hap) 은 floor+1
- 문제를 풀기 위해서 입력받은 수 (number) 의 층을 구한후 그 층의 몇번째 배열(box)에 속해있는지 알아야한다
1. 층을 구한다 (floor) -> 층을 구하면 box는 자동으로 구해진다. ( 다 빼고 남은 수 )
ex) 입력받은 수 number가 13이라면?
각 층마다 배열의 개수는 1개씩 늘어난다
floor = 1 -> 배열 1개
floor = 2 -> 배열 2개
floor = 3 -> 배열 3개
따라서 number - floor > 0 인 조건에서
13 - 1 - 2 - 3 - 4 = 3
--> floor = 5 box = 3이 구해진다.
즉 number 13은 5층의 3번째 배열이라는 것 (화살표 방향 유의)
2. hap을 이용해서 분모와 분자를 구한다
(분모 : a 분자 : b)
2-1) 홀수층이라면 ?
분모는 box 분자는 hap - box
2-2) 짝수층이라면 ?
분자는 box 분모는 hap-box
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 1316번 그룹 단어 체커 / 2022.01.24 (0) | 2022.01.24 |
---|---|
[백준-자바] 2292번 벌집 / 2022.01.23 (0) | 2022.01.23 |
[백준-자바] 1157번 단어 공부 / 2022.01.23 (0) | 2022.01.23 |
[백준-자바] 10809번 알파벳 찾기 / 2022.01.23 (0) | 2022.01.23 |
[백준-자바] 3052번 나머지 / 2022.01.23 (0) | 2022.01.23 |