TIL(Today I Learned)
[Java/코딩테스트] 하샤드 수 판별
yunseohhe
2024. 8. 5. 18:02
안녕하세요!
오늘 풀어본 코딩테스트에 대해 다뤄보도록 하겠습니다.
일단, 이 문제를 풀기 전에 알아야 될 수학적 용어를 정리하고 풀어야 합니다.
(입출력 예시 보고도 충분히 풀이가 가능하긴 하지만, 궁금하니깐..!!)
하샤드 수
- 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어 떨어지는 자연수를 말한다.
- 예시 : 12는 각 자릿수 숫자의 합이 1+2=3이고, 12가 3으로 나누어떨어지므로 12는 10진법에서 하샤드 수다. 그러나 16은 1+6=7이고, 16이 7로 나누어떨어지지 않으므로 16은 10진법에서 하샤드 수가 아니다. (출처 : 나무위키)
문제 푼 순서
1. 10으로 나누어 나온 숫자들을 더하는 식에 집중하다보니, if문에서 실수를 하였다.
2. if문을 고쳤더니, 왜 다 통과가 안돼지? 생각해보니
7번 코드 짠 걸로 인해, 이미 x 값은 변했으므로 if문에 들어가는 int x값도 변해있었습니다.
3. 풀다가 너무 안풀려서 아예 다 뒤엎어서 int x값을 문자열로 변환한 뒤, split으로 문자열을 다 나눈뒤에
만든 문자열 배열을 for문으로 돌리면서 각 자리의 수를 더해줍니다.
(이때 문자를 int정수형으로 변환해줘야 됩니다!! 문자열 + 문자열은 "문자열"이기 때문입니다.)
그리고 if문으로 하샤드 수를 판단해줍니다.
오늘의 요약
코딩 문제는 수학적인 지식이 필요할 때가 있습니다.
많이...