안녕하세요. 박기린 입니다.
백준 1152번 단어의 개수 문제를 풀어봅시다.
문제 링크
https://www.acmicpc.net/problem/1152
문제 해석 / 반례
영어 단어와 공백으로 이루어진 한 문장을 입력받으면, 그 문장에 단어가 몇 개가 있는 지를 출력해주면 되는 쉬운 문제입니다.
다만, 중간에 함정 반례를 피하지 못해 오답이 뜨는 경우가 있습니다.
그 반례는 바로 입력이 공백 (" ")으로만 주어지는 경우입니다.
정답 코드
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
if (input.length === 1 && input[0] === "") {
result = 0;
} else {
result = input.length;
}
console.log(result);
정답 코드 풀이
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
fs 모듈로 입력을 받아올 때,
1. trim()을 이용해서, 문장의 앞 뒤 공백이 주어지는 경우를 방지합니다.
2. split()을 이용해서, 문장을 띄어쓰기 단위로 나누어서 Array에 담습니다.
여기까지 하면, input.length를 console.log()로 출력하면 끝이라고 판단할 수 있습니다. 하지만 반례인 입력이 공백 (" ")으로만 주어지는 경우를 방지해야 합니다.
if (input.length === 1 && input[0] === "") {
result = 0;
} else {
result = input.length;
}
Array의 길이가 1이면서, 그 element가 빈 String("")일 경우, 단어의 개수를 0으로 지정합니다.
이러면 반례에 당하지 않습니다.
반응형
'JS > 백준' 카테고리의 다른 글
[백준JS] 10812. 바구니 순서 바꾸기 (0) | 2023.03.18 |
---|---|
[백준JS] 10809. 알파벳 찾기 (0) | 2023.03.17 |
[백준JS] 11654. 자바스크립트 아스키 코드 출력하기 (ASCII) (0) | 2023.03.14 |
[백준JS] 10811. 바구니 뒤집기 (0) | 2023.03.12 |
[백준JS] 10810. 골 넣기 (2) | 2023.03.11 |