[내일배움캠프 12일차] 코드카타 [프로그래머스 스쿨] 코딩테스트 연습 기초 - 문자열을 정수로 변환하기

김현정·2025년 3월 6일
0

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

  • 제한사항
    N의 범위 : 100,000,000 이하의 자연수

입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

기본 코드

import java.util.*;

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

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

내가 구현한 코드

import java.util.*;

public class Solution {
    public int solution(int n) {
        
        int[] arr = Arrays.stream(String.valueOf(n).split("")).mapToInt(Integer :: parseInt).toArray();
        int answer = Arrays.stream(arr).sum();

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

문제 해결

들어오는 숫자를 정수형 배열로 바꿉니다.
정수형 배열 arr 변수는 Arrays.stream() 메소드로 스트림으로 변환해주고, String.valueOf(n)은 숫자 n을 문자열로 반환한 뒤에 .split("")으로 한글자씩 나눠서 배열로 나타내줍니다. 그 뒤에 mapToInt(Integer :: paresInt)를 해서 문자열을 정수로 변환해주었고, 그 뒤에 .toArray()로 스트림을 배열로 변환 시켰습니다

answer 정수형 변수에 Arrays.stream(arr)인 정수배열 arr을 스트림으로 변환해서 .sum()으로 배열의 모든 숫자를 더해서 반환했습니다.

알게된 점

  1. Arrays.stream()는 배열을 스트림으로 변환하는 메소드이다.
  2. String.valueOf(n)은 숫자 n을 문자열로 변환해주는 메소드이다.
  3. .split("")은 한 글자씩 나눠서 배열로 변환
  4. mapToInt(Integer :: paresInt)은 문자열을 정수로 변환해준다.
  5. .toArray()는 스트림을 배열로 변환시킵니다.
  6. Arrays.stream(배열 이름).sum();은 배열의 모든 값을 더해주는 역할.
  7. 이 방법은 배열을 만들다보니 메모리사용이 있어서 실행속도가 좀 느림
  8. 코드 최적화
public int solution(int n) {
    int sum = 0;
    while (n > 0) {
        sum += n % 10; // 마지막 자리 숫자 더하기
        n /= 10;       // 마지막 자리 숫자 제거
    }
    return sum;
}

0개의 댓글