안녕하세요!
오늘 풀어본 코딩테스트에 대해 다뤄보도록 하겠습니다.
일단, 이 문제를 풀기 전에 알아야 될 수학적 용어를 정리하고 풀어야 합니다.
(입출력 예시 보고도 충분히 풀이가 가능하긴 하지만, 궁금하니깐..!!)
하샤드 수
- 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어 떨어지는 자연수를 말한다.
- 예시 : 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문으로 하샤드 수를 판단해줍니다.
오늘의 요약
코딩 문제는 수학적인 지식이 필요할 때가 있습니다.
많이...
'TIL(Today I Learned)' 카테고리의 다른 글
[Java/코딩테스트] 서울에서 김서방 찾기 (0) | 2024.08.07 |
---|---|
[Java/코딩테스트] 콜라츠 추측 (0) | 2024.08.06 |
[Java/코딩테스트] 정수 내림차순으로 배치하기 (0) | 2024.08.02 |
[Java] 정수형 → 문자열 / 문자열 → 정수형 변환 정리 (0) | 2024.08.01 |
[Java/코딩테스트] 약수의 합 (0) | 2024.07.31 |