💡기본 정보
유형
: 브루트포스
풀이 날짜
: 2025년 01월 07일
풀이방법 한줄 요약
:이중 for문으로 제외되는 난쟁이를 찾아내기
💡문제에서 구해야 할 것
일곱난쟁이의 키의 합이 100이 됨.
- 입력 : 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어짐. 100을 넘지 않는 자연수 . 아홉 난쟁이의 키는 모두 다름
출력 : 일곱난쟁이의 키를 오름차순으로 출력 (일곱난쟁이를 찾을 수 없는 경우 X)
💡알고리즘 설계
- 난쟁이 2명을 제외하곤 100이 되어야함
- 즉, 전체합 -난쟁이-난쟁이=100 이어야함
-선택될 두 난쟁이를 제외해줌(이중 for 문으로)
💡CODE
const fs = require("fs");
const heights = fs
.readFileSync(0, "utf8")
.toString()
.trim()
.split("\n")
.map(Number);
function snowwhite() {
const totalSum = heights.reduce((total, now) => total + now, 0);
for (let i = 0; i < heights.length; i++) {
for (let j = i + 1; j < heights.length; j++) {
if (totalSum - heights[i] - heights[j] === 100) {
return heights.filter((_, index) => index !== i && index !== j);
}
}
}
return null;
}
const result = snowwhite();
if (result) {
console.log(result.sort((a, b) => a - b).join("\n"));
}
💡시간복잡도
💡 틀린 이유 & 틀린 부분 수정
- 오름차순 정리를 까먹음
- 찾지 못했을 때 null 을 return 하는 로직을 까먹음
💡 다른 풀이 or 기억할정보
const heights = fs.readFileSync(0,"utf8").toString().trim().split("\n").map(number);
입력할 때 여러 개의 문단 나눔으로 구분해서 입력할 때
console.log(result.sort((a,b)=>a-b).join("\n"));
출력할 때 여러 개의 문단 나눔과 오름차순 정리해서 출력할 때
백준 14717 : 앉았다 (0) | 2025.01.09 |
---|---|
백준 10488 : 유레카 이론 (1) | 2025.01.08 |
개념 정리 : 스택, 큐, 리스트, 해시맵 개념과 사용코드(삽입, 삭제 등) 정리 (0) | 2025.01.06 |
백준 2231: 분해합 (0) | 2025.01.06 |
[밀라 알고리즘 스터디]1주차 : 브루트 포스 (0) | 2025.01.06 |