| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 모던자바스크립트 딥다이브
- const
- 모던자바스크립트DeepDive
- 11399 node.js
- 자바스크립트 함수
- 자바스크립트 일급객체
- 개인프로젝트
- 백준25176
- 백준1789
- Javascript
- 백준1026
- 14655 nodejs
- 자바스크립트 딥다이브
- 21313 nodejs
- 1026 node.js
- 11047 node.js
- 1931 node.js
- IT5분잡학사전
- 개발자
- 1541 node.js
- 코딩
- flex box
- 2217 node.js
- 모던자바스크립트
- 백준21313
- 노마드스터디
- 1789 node.js
- 노개북
- CSS flex
- 노마드북클럽
Archives
- Today
- Total
캐또's coding
1193 - 분수찾기 - node.js 본문
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
문제 이해가 어려워서 처음에 시간이 오래 걸렸는데 간단히 보자면,
![]() |
![]() |
지그재그는 위 그림과 같은 지그재그를 말하는 것이었다. 예제에서 4는 3/1이고 5는 2/2고 6은 1/3이었는데,
위의 파란 글씨로 순서를 써 둔 것을 보면 왜 그런 결과가 나오는 것인지 이해할 수 있을 것이다.
대각선 줄을 기준으로 몇 번째 줄에 있는지를 보면서 규칙을 찾을 수 있다. 분자와 분모(혹은 이 말 때문에 혼란이 온다면 각 칸에 담긴 숫자 A, B라고 칭해도 좋다.
짝수 번째 줄에서 분자는 ++, 분모는 --
홀수 번째 줄에서 분자는 --, 분모는 ++
| 줄 | 해당하는 분수 (왼쪽부터 오른쪽으로 가는 순서) | ||||
| 첫 번째 | 1 / 1 | ||||
| 두 번째 | 1 / 2 | 2 / 1 | |||
| 세 번째 | 3 / 1 | 2 / 2 | 1 / 3 | ||
| 네 번째 | 1 / 4 | 2 / 3 | 3 / 2 | 4 / 1 | |
| 다섯 번째 | 5 / 1 | 4 / 2 | 3 / 3 | 2 / 4 | 1 / 5 |
const input = Number(require("fs").readFileSync("/dev/stdin").toString().trim());
let line = 1;
let nums = 1;
let 분자 = 1;
let 분모 = 1;
while (input > nums) {
nums += 1 + line++;
}
if (line % 2 == 0) {
분자 = line - (nums - input);
분모 = nums - input + 1;
console.log(`${분자}/${분모}`);
} else {
분자 = nums - input + 1;
분모 = line - (nums - input);
console.log(`${분자}/${분모}`);
}
지그재그의 모양 등을 생각하기보다 위의 표와 같이 정리한 것대로 작성했을 때, 결국 분수들의 총 갯수에 따라서 반복문을 멈추면서 line을 ++해준다 (바로 이전 문제에서 사용한 방법과 동일)
반복문을 돌고 나면? 일정 범위에 따라 멈추기 때문에 당연히 line이 몇인지 나온다.
몇 번째 줄인지 알았다면 그 안에서 다시 어떤 분수인지 찾아야 하는데, 짝수와 홀수에 따라서 각각 반대로 분자와 분모를 도출할 수 있다.
예를 들어, 입력값이 9라면?
해당 번호는 네 번째 줄이다.
nums - input은 전체 숫자에서 입력으로 들어온 값을 빼는 것인데, 이 값은 마치 인덱스처럼 그 줄의 0~해당 라인.length만큼 나오게 된다.
==> 이것을 계산에 넣어보면?? 값은 3/2
분자는 line - (nums - input)의 값 그러니까 4 - (10 - 9) = 3이 된다.
분모는 nums - input + 1의 값 그러니까 10 - 9 + 1 = 2가 된다.
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 10250 - ACM 호텔 - node.js (0) | 2022.08.25 |
|---|---|
| 2869 - 달팽이는 올라가고 싶다 - node.js (0) | 2022.08.24 |
| 2292 - 벌집 - node.js (0) | 2022.08.24 |
| 1316 - 손익분기점 - node.js (0) | 2022.08.23 |
| 1316 - 그룹 단어 체커 - node.js (0) | 2022.08.23 |
Comments

