-
코딩테스트 연습 / 연습문제 / 자릿수 더하기알고리즘/프로그래머스 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 문제 보기
히스토리 보기
'알고리즘 > 프로그래머스' 카테고리의 다른 글
코딩테스트 연습 / 연습문제 / 정수 제곱근 판별 (1) 2020.04.14 코딩테스트 연습 / 연습문제 / 정수 내림차순으로 배치하기 (1) 2020.04.14 코딩테스트 연습 / 연습문제 / 이상한 문자 만들기 (0) 2020.04.13 코딩테스트 연습 / 연습문제 / 소수 찾기 / JAVA (1) 2020.04.10 코딩테스트 고득점 kit / 완전탐색 / 소수 찾기 (0) 2020.04.10