Coding Test/Java

[프로그래머스 / Java] Lv.1 자연수 뒤집어 배열로 만들기 (StringBuilder 정리하기...)

annovation 2025. 4. 28. 22:30

Question

https://school.programmers.co.kr/learn/courses/30/lessons/12932

 

프로그래머스

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

programmers.co.kr


Code

💡방법 1

class Solution {
    public int[] solution(long n) {
     String reversed = new StringBuilder(String.valueOf(n)).reverse().toString();
        int[] answer = new int[reversed.length()];

        for (int i = 0; i < reversed.length(); i++) {
            answer[i] = reversed.charAt(i) - '0';
        }

        return answer;
    }
}
  • StringBuilder
  • String.valueOf(n)  [각주:1]
    • n을 String으로 반환
    • ✅ 예시
long n = 12345L;
String s = String.valueOf(n); // "12345"
  • reverse() [각주:2]
    • StringBuilder 객체에 대한 메서드로, 문자열을 거꾸로 뒤집음
    • ✅ 예시
StringBuilder sb = new StringBuilder("hello");
sb.reverse(); // "olleh"
  • charAt(i) [각주:3]
    • i번째 인덱스의 문자를 가져옴
    • ✅ 예시
String s = "abcd";
char c = s.charAt(2); // 'c'
  • answer[i] = reversed.charAt(i) - '0';
    • 0을 빼는 이유 : 문자로 된 숫자를 진짜 int 숫자로 만들기 위해서
    • ex. '7'은 55로 저장되어있다. 여기서 int 7의 값을 얻으려면 '0'인 48의 값을 빼면된다.
    • char 타입끼리 +, - 연산을 하면, 내부적으로 숫자 타입(int)으로 변환(promote)돼서 계산할 수 있다. [각주:4]
    • String 타입은 String이 내부적으로 char 배열을 가지고 있어서 .charAt(i) char를 꺼낼 수 있다. [각주:5]

💡방법 2

import java.util.stream.IntStream;

class Solution {
    public int[] solution(long n) {
        return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
    }
}

출처

반응형