티스토리 뷰

Java

[프로그래머스] 자릿수 더하기 - Java

seungwonlee 2024. 11. 11. 14:11

https://school.programmers.co.kr/learn/courses/30/lessons/12931?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명

더보기
더보기
더보기
더보기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어주세요.

예를 들어 N = 123이면, 1 + 2 + 3 = 6을 return 하면 됩니다.

 

내가 푼 방식

  • int를 String으로 형변환 후 toCharArray() 메서드를 활용하여 char[] 배열에 담기
  • 반복문(for)을 통해 answer에 값 더해주기
  • char 타입의 문자 '1'을 int 타입의 숫자 1로 변환하려면 ASCII값을 이용하여 변환하기 
    • '1'의 ASCII 값은 49이고, '0'의 ASCII 값은 48입니다. 따라서 '1'-'0'은 1이 입니다.
    • '0' ~ '9'까지의 숫자 문자에 대해 적용 가능합니다.

내가 푼 코드

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        char[] temp = Integer.toString(n).toCharArray();
        for(char a : temp) {
            answer += a -'0';
        }
        return answer;
    }
}

아래 다른 사람이 푼 코드

  • 형변환 없이 정수 연산을 사용하여 자릿수를 구하는 방식
  • n%10으로 마지막 자릿수를 추출하여 answer에 더하고, n /= 10으로 마지막 자릿수를 제거
  • n이 0이 될 때까지 반복
import java.util.*;

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

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

        return answer;
    }
}

이렇게도 풀 수 있는데 왜 문제를 읽으면서 형변환으로 풀어야지 하는 생각이 먼저 들었을까..?

 

끝.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함