https://softeer.ai/practice/info.do?idx=1&eid=395&sw_prbl_sbms_sn=234609
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
가격을 기준으로 금속의 종류를 정렬한 다음
제일 비싼 애부터 가방에 넣어 가방의 무게는 차감되고 가격은 증감하는 식으로 반복문을 짜면 된다.
그런데 조건문을 어떻게 쓰느냐에 따라 어떤 건 오답이 되고 어떤 건 정답이 되더라...(테스트 케이스는 둘 다 통과함)
정답 :
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', function(line) {
input.push(line);
}).on('close', function() {
const condition = input.shift().split(' ').map(v =>parseInt(v));
const [w, m]= condition; input = input.map(el => el.split(' ').map(v =>parseInt(v)));
input.sort(function(a,b) {
returnb[1] - a[1];
})
let price =0;
let space = w;
for (let i=0; i < m; i++) {
if (space > input[i][0]) {
space -= input[i][0];
price += input[i][0] * input[i][1];
} else {
price += space * input[i][1];
break;
}
}
console.log(price);
process.exit();
})
오답 :
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', function(line) {
input.push(line);
}).on('close', function() {
const condition = input.shift().split(' ').map(v =>parseInt(v));
const [w, m]= condition; input = input.map(el => el.split(' ').map(v =>parseInt(v)));
input.sort(function(a,b) {
returnb[1] - a[1];
})
let price =0;
let space = w;
for (let i=0; i < m; i++) {
if (space > input[i][0]) {
space -= input[i][0];
price += input[i][0] * input[i][1];
continue;
}
if (space < input[i][0] && space >0) {
price += space * input[i][1];
break;
}
}
console.log(price);
process.exit();
})
차이를 발견하지 못하고 있는 상태...
전에 프로그래머스에서 알고리즘 풀 때도 if와 else를 쓰느냐, else if를 쓰느냐, 따로 if문을 쓰느냐로 정답이 나뉘던 기억이 난다.
조건문은 엄청 까다로운 것임을 새삼 실감하는 중.
'코딩테스트 > Softeer 연습 문제' 카테고리의 다른 글
[Javascript] 성적 평균 (0) | 2023.08.04 |
---|---|
[Javascript] 지도 자동 구축 (0) | 2023.08.04 |
[Javascript] 8단 변속기 (0) | 2023.08.03 |
[Javascript] 전광판 (0) | 2023.08.03 |
Softeer 코딩테스트 연습 문제 체험 (0) | 2023.07.27 |