해당 문제는 문자를 문자열로 변환해준 후 그 길이만큼 for문을 돌리면서 누적 연산을 시켜주는 굉장히 간단한 문제인데요.
다만 문자열로 바꾼 후 직접적인 접근이 가능한 JS에 비해, 자바에서의 문자열은 불변 객체의 특성 때문에 배열의 각 요소에 접근하는 것이 어려운데요. 아무튼 이러한 점을 고려하여 각 코드를 작성했습니다.
그럼 해당 공식을 적용한 자바스크립트 버전을 소개해 드리겠습니다.
- 자바스크립트 버전
function solution(n) { let answer = 0; // toString으로 숫자를 문자열 변환 n = n.toString(); // for문을 이용해 문자열에 직접 접근하여 누적 연산 가능 for(let i = 0 ; i < n.length ; i++){ answer += parseInt(n[i]); } return answer; }
그리고 자바 버전으로 구현한 코드는 다음과 같습니다.
- 자바 버전
import java.util.*; public class Solution { public int solution(int n) { int answer = 0; // 숫자를 문자열로 변환 String numStr = String.valueOf(n); // 숫자를 문자열로 변환 // for문을 돌리면서 charAt 메서드를 이용해 문자열의 문자들을 저장 for (int i = 0; i < numStr.length(); i++) { char c = numStr.charAt(i); // 문자열에서 한 글자씩 가져옴 // 꺼낸 문자들은 여전히 char 타입이므로 getNumericValue 메서드로 원형 그대로 정수 변환 후 누적 연산 answer += Character.getNumericValue(c); // 문자를 숫자로 변환하여 더함 } return answer; } }
JS
의 경우 앞서 말한대로 배열의 직접적인 접근이 가능하여 손 쉽게 연산할 수 있었지만, 자바의 경우 배열처럼 대괄호를 이용해 문자열의 각 요소에 집적적으로 접근하는 것을 불허하기 때문에 단골 메서드인 charAt
을 이용하여 문자열 -> 문자 -> 정수 순으로 변환을 해야하는 번거로움이 존재했습니다.