알고리즘 : 프로그래머스 : JAVA : 자릿수 더하기

2022. 1. 19. 23:09알고리즘/프로그래머스

반응형

<문제>


<코드 & 설명>

public class Solution {
    public int solution(int n) {

// 합을 구하기 위한 변수 answer 선언
        int answer = 0;
        while(n != 0) {

// 입력한 값을 10으로 나눈 나머지를 answer 에 더한다
// 만약 입력한 값이 135 라면 135%10 = 5 이다. (%10 = 1의 자리 구하는 방식)
// answer += 5 인 셈이다. 
            answer += n%10;

// 입력한 값에 10을 나눈다. 135를 10으로 나누면 13.5 지만 int 형이므로 13이 남는다. 
            n /= 10; 
        }

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

이를 반복하면 
135 -> 5
13 -> 3
1 -> 1
5+3+1 = 9 를 쉽게 구할 수 있다.

<설명>  

1. 반환하기 위한 정수 자료형 int로 answer 변수를 생성하고 0으로 초기화
2. n이 0이 되기 전까지 while문을 돌림
3. answer 함수에 자릿수의 합을 넣고 n을 10으로 나누어 n에 저장(n이 0 되기 전까지 과정을 반복)
4. return으로 answer 반환


<참고>

  
while문
조건식을 확인하여 false가 될 때까지 수행문을 계속 반복합니다. 따라서 조건식이 계속 true이면 수행문이 무한 반복되고,
false이면 아예 실행을 하지 않습니다. while문은 조건식에 따라서 반복을 제어하고 싶을 때 사용합니다.

ex)
public static void main(String[] args) {
    int a = 0;
    int b = 5;
        
    while(a < b) {
        ++a;
        System.out.println(a); // 결과: 0, 1, 2, 3, 4
    }
    
}


<다른 방법>

public class Solution {
    public int solution(int n) {
        int answer = 0;
        
        // n값을 문자형으로 변형시키고 문자열 sum에 한글자씩 넣어주고 
        String[] sum = Integer.toString(n).split("");
        
        // for문으로 sum 문자열 길이만큼 돌려주기
        for(int i=0; i<sum.length; i++) {
            
        // 문자열에 들어가있는 값을 정수으로 변환하고 answer 값을 넣어준다.    
            answer += Integer.parseInt(sum[i]);
        }

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}
반응형