병아리의 코딩 일기

[프로그래머스 Lv.1] 자릿수 구하기 - 색다른 풀이 본문

코딩테스트 Coding Test/프로그래머스

[프로그래머스 Lv.1] 자릿수 구하기 - 색다른 풀이

oilater 2023. 7. 26. 22:14

https://school.programmers.co.kr/learn/courses/30/lessons/12931?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

간단한 문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

노멀한 풀이

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String[] arr = String.valueOf(n).split("");
        for(String a : arr) {
            answer += Integer.parseInt(a); 
        }
        
        return answer;
    }
}

 

신박한 풀이

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;

        while(true){
            answer+=n%10;
            if(n<10)
                break;

            n=n/10;
        }
        return answer;
    }
}

1. n을 10으로 나눈 나머지를 answer에 더해준다.

2. 종료 조건에 부합하지 않으면 넘어가고, n 을 10으로 나눠준다.

3. 이 과정을 반복하면 answer 에 답이 들어가있다.

 

즉, 일의 자리부터 십의 자리, 백의 자리 이렇게 거꾸로 answer에 더해준 것이다.

이 풀이의 장점은 형변환이 필요없다는 점이고, 시간도 매우 빠르다.

728x90
반응형
LIST