본문 바로가기
코딩테스트

[프로그래머스] 자릿수 더하기 Lv.1

by 승븐지 2025. 12. 16.
반응형
평소에 자주 사용하던 언어는 Java, JavaScript이며,
옛날에는 취업준비할떄 몇 번 했었는데 다시 해보려고한다. 그래서 LV.1부터 시작하기로 마음을 먹었다.
합격률이 높은 Lv.1부터 찾아봤는데 생각을 해서 풀어야 한다. 은근어렵다,, 큰일났다. 그런데 또 재밌다 한번 문제를 알아보자 

 

N의 값은 문자열을 더한 1+2+3 = 123 숫자를 더한 1+2+3 =6 이렇게 예시가 나온다. 먼저 숫자를 문자열로 변환을 해야한다. for문 while문 등 여러 방법이 있지만 내 스타일로 해봤다.

1. Step1 String,valueOf(n) -> 숫자를 문자열로 변환

 

import java.util.*;

public class Solution {
    public int solution(int n) {

        return String.valueOf(n); // Step1 우선은 문자열로 변환을한다.
    }
}

 

2.Step 2 String.valueOf(n).chars() -> Intstream으로 반환 후 각 문자를 유니코드 정수 값으로 제공을 한다.
import java.util.*;

public class Solution {
    public int solution(int n) {

        return String.valueOf(n) // Step1 우선은 문자열로 변환을한다.
        			 .chars();   // Step2 유니코드 정수 값으로 제공받을 수 있게 반환
    }
}
3. Step 3 String.valueOf(n).chars().map(uni -> uni - '0') 문자 '0'의 아스키 코드인 (48)을 뺴서 숫자로 변환한다.
import java.util.*;

public class Solution {
    public int solution(int n) {

        return String.valueOf(n) // Step1 우선은 문자열로 변환을한다.
        			 .chars();   // Step2 유니코드 정수 값으로 제공받을 수 있게 반환
                     .map(uni -> uni - '0');   // Step3 문자 '0'의 아스키코드(48)을 뺴고 숫자로 다시 변환
    }
}

Java에서 char는 내부적으로 정수(유니코드 값) 로 저장된다.

문자유니코드(10진수)
'0'  48
'1' 49
'2' 50
'9' 57

 

4.Step 4 String.valueOf(n).chars().map(uni->uni - '0').sum() 자릿수합 그리고 ;을 선언하여 stream을 종료한다 
import java.util.*;

public class Solution {
    public int solution(int n) {

        return String.valueOf(n) // Step1 우선은 문자열로 변환을한다.
        			 .chars();   // Step2 유니코드 정수 값으로 제공받을 수 있게 반환
                     .map(uni -> uni - '0');   // Step3 문자 '0'의 아스키코드(48)을 뺴고 숫자로 다시 변환
                     .sum();	 // Step4 합을 더하고 stream을 종료한다.		
    }
}

 

// 예제 
char ch = '5';

int num1 = ch - '0';   // 5
int num2 = ch;         // 53 (유니코드 값)


//ch = '0' = 48
//ch = '1' = 49
//ch = '2' = 50
//ch = '3' = 51
//ch = '4' = 52
//ch = '5' = 53

 

반응형

'코딩테스트' 카테고리의 다른 글

[프로그래머스] 평균 구하기 Lv1  (0) 2025.12.16
[프로그래머스] 짝수와 홀수 Lv1  (0) 2025.12.16