티스토리 뷰

프로그래머스 문제를 푸는데 너무 아쉬워서 가지고 와봤다.

 

문제는 다음과 같다.

하샤드 수

 

처음에는 for 문으로 하나씩 빼야 하나? 하고 for문으로 한 자리씩 구했다.

for(let i = 0 ; i < x.index ; i ++)

 

그리고 생각이 멈췄다. 얘를 어떻게 더해주지? 그러다 reduce가 생각이 났다.

 

reduce는 배열이어야 하는데..  생각나는대로 해보자면

1. 인덱스를 구해야 하니까 문자로 바꿔주고

2. 배열로 바꿔주고

3. reduce 사용!

4. x%구한값 ===  0 이면 ture 아니면 false겠지?

 

그리고 작성한 함수

function solution(x) {   
    const num = x.toString().split('').reduce((a,b)=> a + b,0);
    return x % num === 0 ? true :false  
}

 

당연히 안 되겠지~라고 생각했다. 왜냐 매번 에러천지였으니까

물론 split 스페링 오타로 에러가 나긴 했다ㅋㅋ

고쳐주니 웬걸? 돌아는 가네? 근데 전부 true 아니면 false 만 나왔다

 

왜지 뭐지 아무리 찾아봐도 모르겠어서 gpt에게 물었더니 

문자열과 문자열을 더해서 숫자와 문자로 나누니 답이 안 나오는 거였나 보다.

 

아니 숫자랑 문자랑 나누면 알아서 싱크 맞춰주지 않나.. 주룩ㅠ

 

그래서 수정한 답은 

function solution(x) {   
    const num = x.toString().split('').reduce((a,b)=> parseInt(a) + parseInt(b),0);
    return x % num === 0 ? true :false  
}

 

그랬더니 답이 아주 잘 나왔다!! 

아주 초보적인 문제지만 나는 초보이고 이렇게 깔끔하게 답 구할 때는 뿌듯 뿌듯 😏🤪(에러 안 났잖아@!!)

 

나중에는 문자열로 바꾸지 않고 숫자는 숫자로 바로바로 구할 수 있는 함수를 작성할 수 있을 날을 기대하며,...