프로그래머스 입문 : 369게임
첫번째 시도
function solution(order) {
var answer = 0;
//숫자를 문자열로 변환
let newOrder = String(order);
//반복문을 통해 n%3==0인지 확인
for (let i = 0; i < newOrder.length; i++) {
if (newOrder[i] % 3 === 0 && newOrder[i] !== 0) {
answer++;
}
}
return answer;
}
newOrder[i] !== 0 을 하면,
비교연산자이기 때문에 0이 아닌 값인지 판단하는 것으로 생각하여 해당 연산자를 사용했다.
하지만 !==이 엄격한 비교를 하는 연산자인지 모르고 사용하여 원하는 값이 출력되지 않았다.
두번째 시도
function solution(order) {
var answer = 0;
//숫자를 문자열로 변환
let newOrder = String(order);
//반복문을 통해 n%3==0인지 확인
for (let i = 0; i < newOrder.length; i++) {
if (newOrder[i] % 3 === 0 && newOrder[i] != 0) {
answer++;
}
}
return answer;
}
!== 연산자는 변수의 타입이 다르면 true를 반환한다.
order에 100이라는 숫자가 주어졌을 때
newOrder는 '100'이라는 문자형이고,
newOrder[1]과 newOrder[2]는 문자형 0을 의미한다.
그래서 newOrder[i] !== 0를 하면 true가 반환되므로
!==을 사용하여 원하는 값을 얻고 싶다면
newOrder[i] !== '0'으로 작성하면 된다.
또는 위의 코드처럼 newOrder[i] != 0 으로 작성하면 된다.