TIL(Today I Learned)

[Java/코딩테스트] 하샤드 수 판별

yunseohhe 2024. 8. 5. 18:02

안녕하세요!

오늘 풀어본 코딩테스트에 대해 다뤄보도록 하겠습니다.

 

문제 설명1
문제 설명2

 

일단, 이 문제를 풀기 전에 알아야 될 수학적 용어를 정리하고 풀어야 합니다.

(입출력 예시 보고도 충분히 풀이가 가능하긴 하지만, 궁금하니깐..!!)

 

하샤드 수

  • 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어 떨어지는 자연수를 말한다.
  • 예시 : 12는 각 자릿수 숫자의 합이 1+2=3이고, 12가 3으로 나누어떨어지므로 12는 10진법에서 하샤드 수다. 그러나 16은 1+6=7이고, 16이 7로 나누어떨어지지 않으므로 16은 10진법에서 하샤드 수가 아니다. (출처 : 나무위키)

 

 

문제 푼 순서

1.  10으로 나누어 나온 숫자들을 더하는 식에 집중하다보니, if문에서 실수를 하였다.

시도 1
결과 1

2. if문을 고쳤더니, 왜 다 통과가 안돼지? 생각해보니

7번 코드 짠 걸로 인해, 이미 x 값은 변했으므로 if문에 들어가는 int x값도 변해있었습니다.

시도 2
결과 2

3. 풀다가 너무 안풀려서 아예 다 뒤엎어서 int x값을 문자열로 변환한 뒤, split으로 문자열을 다 나눈뒤에

만든 문자열 배열을 for문으로 돌리면서 각 자리의 수를 더해줍니다.

(이때 문자를 int정수형으로 변환해줘야 됩니다!! 문자열 + 문자열은 "문자열"이기 때문입니다.)

그리고 if문으로 하샤드 수를 판단해줍니다.

 

시도 3
결과 3

 


오늘의 요약

코딩 문제는 수학적인 지식이 필요할 때가 있습니다.
많이...