알고리즘/프로그래머스

코딩테스트 연습 / 연습문제 / 자릿수 더하기

외계공룡 2020. 4. 13. 17:04

 

풀이 방법1

public class Solution {
    public static int solution(int n) {
		int answer = 0;
		
		String s = String.valueOf(n);
		for(int i=0; i<s.length(); i++) {
			answer += Character.getNumericValue(s.charAt(i));
		}
		
		return answer;
	}
}

자연수 N을 문자열(String)으로 변환하는 방법입니다.

문자열로 변환하게 된다면 charAt() 메소드를 이용하여 형태소마다 끊을 수 있게 되므로 편리합니다.

 

getNumericValue 메소드는 char형 데이터를 정수로 바꿔주는 역할을 합니다.

int타입의 숫자를 charAt()으로 분리하면 아스키코드로 변환되어 저장되기 때문에

getNumericValue 메소드를 사용하던가 (s.charAt(i) - 48) 둘 중 하나를 사용하여 정수형 타입으로 바꿔주어야 합니다. 

 

 

풀이 방법2 BEST

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

        while (n != 0) {
            answer += n % 10;
            n /= 10;
        }

        return answer;
    }
}

자연수 N을 digit단위로 분리하기 위해 10으로 나눠주는 방법입니다.

변환과정 없이 연산만으로 구할 수 있어서 굉장히 효율적이고 빠른방법입니다.

조금 수학적인 접근이 필요한 코드라 생각해내기 어려울 수도 있습니다.

 

 

수행속도 비교

  풀이 방법1 풀이 방법2
1차 수행속도 38,600 500
2차 수행속도 37,300 400
3차 수행속도 45,800 500
평균 약 40,567 약 467

 

 

문제 보기

 

프로그래머스

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

programmers.co.kr

 

히스토리 보기

 

chucoding/algorithm

알고리즘 문제풀이 사이트 도전~!! . Contribute to chucoding/algorithm development by creating an account on GitHub.

github.com