https://school.programmers.co.kr/learn/courses/30/lessons/12918
처음에 작성한 코드
function solution(s) {
var answer = true;
let isNumber = true;
for(let i=0; i<s.length; i++){
if (!Number(s[i])){
isNumber = false;
}
}
if((s.length !== 4 && s.length !== 6) || !isNumber)
answer = false;
return answer;
}
코드 실행은 잘 됐지만, 제출을 하니 몇몇 테스트에서 실패가 떠서 틀렸다.
다시 시도해본 방법 (1)
조건을 하나 하나 따지면서 조건에 맞지 않으면 바로 false를 return하는 방법
function solution(s) {
var answer = true;
let isNumber = true;
if (s.length !== 4 && s.length !== 6)
return false;
for(let i=0; i<s.length; i++){
if(!Number(s[i]))
isNumber = false;
}
if(!isNumber)
return false;
return answer;
}
처음에 작성한 코드와 실패하는 테스트가 똑같았다.. 근본적인 알고리즘이 바뀌지 않아서인듯
다시 시도해본 방법(2)
isNumber가 false인 조건으로 사용한 !Number(s[i])가 문제였다.
0도 falsy한 값이기 때문에 문자열에 0이 포함된 경우에도 false를 반환해버린 것이었다.
조건을 바꿔주니 바로 해결되었다.
function solution(s) {
var answer = true;
let isNumber = true;
for(let i=0; i<s.length; i++){
if(s[i] % 1 != 0)
isNumber = false;
}
if((s.length !== 4 && s.length !== 6) || !isNumber)
answer = false;
return answer;
}
'알고리즘 문제' 카테고리의 다른 글
데일리 루틴 35번 - 부족한 금액 계산하기 (0) | 2024.08.20 |
---|---|
데일리 루틴 29번 - 제일 작은 수 제거하기 (0) | 2024.08.20 |