Programmers
2024. 01. 23 프로그래머스 하샤드 수
윤미주
2024. 1. 23. 09:56
프로그래머스 문제를 푸는데 너무 아쉬워서 가지고 와봤다.
문제는 다음과 같다.
하샤드 수
처음에는 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
}
그랬더니 답이 아주 잘 나왔다!!
아주 초보적인 문제지만 나는 초보이고 이렇게 깔끔하게 답 구할 때는 뿌듯 뿌듯 😏🤪(에러 안 났잖아@!!)
나중에는 문자열로 바꾸지 않고 숫자는 숫자로 바로바로 구할 수 있는 함수를 작성할 수 있을 날을 기대하며,...