알고리즘/프로그래머스
코딩테스트 연습 / 연습문제 / 자릿수 더하기
외계공룡
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