-
[백준 Node.js/Javascript] 1152번 단어의 개수To infinity/Coding Practice 2021. 6. 27. 22:28
2021.06.27
Question
Answer code
let input = ` `.toString().trim().split(' '); let count = 0 for (let i = 0; i < input.length; i++) { if(input[i]) count++ } console.log(count)
How to solve?
쉽게봤다가 큰코다쳤다.ㅋㅋ
let input = ` `.toString().trim().split(' '); console.log(input.length)
처음엔 length로 풀면 되는거 아냐? 라고 했지만 틀렸다.
왜인지 찾아보니 ' ' 공백만있을 땐 0을 반환해야하는데 1을 반환하는 것.
그래서 공백을 카운팅하지 않기 위한 방법을 찾았다.
1. filter함수를 써보자
filter함수는 true인 값으로 새로운 배열을 만든다고 하니 그렇다면 공백을 포함하지 않을거라 생각했다.
하지만 떡하니 값으로 인식해서 공백으로 새로운 배열을 만들었다.
공백값의 타입을 확인해보니 undefined고 undefined는 조건문 안에서 boolean타입으로 암묵적 변환 되기에 그렇다면 조건문을 이용해서 해당 공백을 없애기로 했다.
let count = 0 for (let i = 0; i < input.length; i++) { if(input[i]) count++ } console.log(count)
찾다보니, forEach 메서드는 희소배열의 존재하지 않는 요소를 순회대상에서 제외한다고 한다. 그렇다면 forEach로도 구할 수 있지 않을까?
아니네. [1, ,3] 이런 경우에는 인식을 안하지만 ['']이렇게 따옴표로 묶여있으면 얘도 하나의 값으로 보는가보다.
Reference
'To infinity > Coding Practice' 카테고리의 다른 글
[백준 Node.js/Javascript] 1193번 분수찾기 (0) 2021.06.29 [백준 Node.js/Javascript] 2292번 벌집 (0) 2021.06.28 [백준 Node.js/Javascript] 2941번 크로아티아 알파벳 (0) 2021.06.27 [백준 Node.js/Javascript] 5622번 다이얼 (0) 2021.06.27 [백준 Node.js] 1157번 단어공부 (0) 2021.06.26