몇년만에 다시 알고리즘을 풀기 시작하면서 오랜만에 두뇌회전을 할 수 있게 만들어준 문제이다.
입출력 예시 및 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
N | answer |
123 | 6 |
987 | 24 |
1번은 문제의 예시와 같다.
2번은 9 + 8 +7 이므로 24가 도출된다.
코드 & 풀이과정
public static int solution(int n) {
int answer = 0;
while(n>0){
// System.out.println(n/10);
// System.out.println(n%10);
answer += n%10;
n /= 10;
}
System.out.println("answer = " + answer);
return answer;
}
int answer을 받고 n이 0보다 작아지면 탈출하는 while을 사용했다.
그리고 answer에 나머지 10 즉, 첫번째 자리를 넣어주고 n을 10으로 나눠서 첫번째 자리를 없애버렸다.
그리고 n이 0보다 작아질때까지 반복하면 결국 (2번기준) 7 + 8 + 9가 되서 answer의 값이 24가 도출된다.
이 문제를 같은자리에서 한 20분을 싸매고 있다 푸니 같이 스터디를 하는 형님이 굉장히 흥미롭고 재밌는 꼼수를 알려주셨다.
public static int solution2(int n) {
String toStr = String.valueOf(n);
int result = 0;
for (int i = 0; i < toStr.length(); i++) {
int num = toStr.charAt(i) - '0';
result += num;
}
return result;
}
n값을 String으로 받아서 charAt(a) ( String에 a번째 글자를 char로 반환)를 사용해 '9','8','7'을 만들어 9 + 8 + 7을 만들었다.
그리고 이런 방식의 연산을 모듈러 연산이라고 한다고 한다.
https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88%EB%9F%AC_%EC%82%B0%EC%88%A0
모듈러 산술 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 수론에서 모듈러 산술(영어: modular arithmetic) 또는 합동 산술(合同算術)은 정수의 합과 곱을 어떤 주어진 수의 나머지에 대하여 정의하는 방법이다. 정수환의 몫
ko.wikipedia.org
회고
근 2년만에 알고리즘을 풀면서 실력이 많이 퇴화했구나 + 기본기가 정말 최악라는걸 느꼈다. 다시한번 열심히 공부할 수 있는 계기가 된거같다.
💻프로그래머스 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12931
'실력 향상 일지 > 프로그래머스' 카테고리의 다른 글
[Java] 자연수 뒤집어 배열로 만들기 (0) | 2022.10.10 |
---|---|
[Java] 정수 제곱근 판별 (0) | 2022.10.09 |
[Java] 평균 구하기 (0) | 2022.10.08 |
[Java] 약수의 합 (0) | 2022.10.07 |
[Java] 짝수와 홀수 (0) | 2022.10.06 |