오예남

[Java] 숫자를 입력 받고 각 자리 수를 더한 값을 출력하는 함수 만들기 본문

기타코딩

[Java] 숫자를 입력 받고 각 자리 수를 더한 값을 출력하는 함수 만들기

오예남 2022. 3. 20. 22:43

www.pixabay.com

 

 

안녕하세요,

오늘은 Java 를 사용해서 입력된 숫자의 각 자리 수를 더하는 알고리즘을 공유하려고합니다.

이 알고리즘은 백준 4673번 셀프넘버 문제를 풀다가 접하게 되었습니다.

 

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

 

위 문제에서는 입력받은 숫자까지 더해야하지만, 이 포스팅에서는 각 자리의 숫자만 더하는 코드를 공유드리겠습니다.

예를들어 1234 를 받으면 1+2+3+4 -> 10을 출력하는 함수의 코드입니다.

 

	public static int calNum(int num) {
		int result=0;
		String[] Snum;
		Snum = Integer.toString(num).split("");
		for(String value : Snum) {
			result += Integer.parseInt(value);
		}
		return result;
	}

민망하지만 제가 처음 작성했던 코드입니다.

숫자를 입력받았지만, 그 숫자를 쪼개기 위해서 String으로 변환하고.... 더하고... 참 부끄러운 코드입니다.

위 코드는 무시하셔도 되구요.

 

 

이제 아래 코드가 다른 분들의 코드를 참고해서 작성한 코드입니다.

	public static int calNum(int num) {
		int result=0;

		while (num!=0) {
			result += num%10;
			num/=10; 
		}	
		
		return result;
	}

확실히 이해하기도 쉽고, 번거롭게 문자로 변환할 필요도 없는 간단한 코드입니다.

while 문을 사용하여 result 값에 num의 마지막 자리수를 넣어주고 마지막 자리를 지우는 동작을 반복합니다.

 

<전체 코드>

public class test {
	public static void main(String[] args) {
		
		System.out.println(calNum(0));
		System.out.println(calNum(3));
		System.out.println(calNum(34));
		System.out.println(calNum(5678));
	}
	
	public static int calNum(int num) {
		int result=0;

		while (num!=0) {
			result += num%10;
			num/=10; 
		}	
		
		return result;
	}	
}

 

<출력 값>

0
3
7
26

 

백준 문제를 풀고 맞췄습니다!! 라는 글자를 확이했더라도 다른 분들의 코드를 확인하는게 중요합니다.

특히 저 처럼 초보코더들에게 고수님들의 좋은 코드들은 정말 너무 소중합니다...

이렇게 글을 쓰는 이유도 한번 더 좋은 코드를 작성해보면서 기억에 담아두기 위함입니다.ㅎㅎ

 

쉬운 알고리즘이겠지만 누군가에게는 도움이 됬으면 좋겠네요 ㅎㅎ

요즘 계속해서 대규모 개발자 채용이 진행되고 있는데, 코딩테스트 준비하시는 분들 모두 화이팅입니다~!