-
1094. [JavaScript]막대기JavaScript_알고리즘/Silver V 2024. 7. 1. 17:51
1. 문제
https://www.acmicpc.net/problem/1094
2. 접근 방법
- 시간 제한: 2초
- 메모리 제한: 128MB
- 수학
3. 자바스크립트 코드
// 인풋 const fs = require("fs"); const input = parseInt(fs.readFileSync("./1094.txt").toString().trim()); // 막대길이 64 let bar = 64; // 자른 막대 저장 리스트 let barList = []; // 총 길이 체크 let total = 0; // 몇개 사용했는지 체크 let count = 0; if (input === bar) { // 막대가 64이고 X값이 64인 경우 1개의 막대만 사용 console.log(count + 1); } else { // 외의 경우 막대가 1이 나올때 까지 분리 while (bar > 1) { // check 변수를 통해서 X 보다 작은 막대를 다 저장 const check = bar / 2; if (check <= input) { barList.push(check); } bar /= 2; } // 저장된 막대를 더하고 빼면서 몇개를 사용했는지 체크 for (bar of barList) { total += bar; count += 1; if (total > input) { total -= bar; count -= 1; } else if (total == input) { console.log(count); break; } } }
4. 문제를 풀고난 후 생각
- 막대기를 반으로 나누면서 X라는 목표의 막대기보다 작은 경우 리스트에 값을 추가한 후 반복문을 통해서 막대기 길이를 더해서 X값이랑 같은지 체크해준다.
5. 문제를 푸는데 도움이 되는 지식
- 수학