TIL/알고리즘

[JAVA] 프로그래머스 | 12932 자연수 뒤집어 배열로 만들기

쑤키다요 2025. 4. 10. 22:01

📝 TIL

- [프로그래머스] 12932 자연수 뒤집어 배열로 만들기

 

제한사항

n은 10,000,000,000이하인 자연수입니다

 

입출력 예

입력#1

12345

 

출력#1

[5,4,3,2,1]


🦔 설계 및 시도

1. 숫자를 문자열로 변환 후 뒤집기

2. 하나씩 쪼개서 정수로 저장!

 

문제 풀이 자체는 간단했는데 parseInt, String.valueOf 등

타입과 메서드 신경써야 할 것들이 많아서 은근 오래 걸렸다

 

 

🔥 풀이에 사용된 개념

String.valueOf(n)

- 숫자나 여러 타입들(int, long, boolean 등)을 문자열(String)으로 바꿔주는 메서드

- n+"" 로 쓰는 것과 비슷하지만 더 명시적이고 안전하다

 

Integer.parseInt(문자)

- 문자열을 정수(int)로 바꿔주는 메서드

- 만약 숫자가 아닌 문자가 들어 있을 경우 NumberFormatException

 

만약, Integer가 아닐 경우? Long.parseLong 과 같이 쓰면 된다!


 

💡 풀이 소스 코드

 

시간복잡도 : O(n)

공간복잡도 : O(n)

 

class Solution {
  public int[] solution(long n) {
      StringBuilder sb = new StringBuilder(String.valueOf(n)).reverse();
      String[] str = sb.toString().split("");

      int[] answer = new int[str.length];
      for (int i=0; i<str.length; i++) {
          answer[i] = Integer.parseInt(str[i]);
      }
      return answer;
  }
}

 

 

문자열 없이 나눗셈과 나머지 연산으로 푸는 방법도 있다!

n%10으로 마지막 자리 추출, n/10으로 앞자리 이동하는 방식으로 공간적에서 더 효율적이다

public int[] solution(long n) {
    String s = String.valueOf(n);
    int[] answer = new int[s.length()];
    int idx = 0;

    while (n > 0) {
        answer[idx++] = (int)(n % 10);
        n /= 10;
    }
    return answer;
}

🚀 새로 배운 내용

- 문자-정수, 정수-문자 간 변환에 익숙해져야 한다

- reverse를 사용해서 문자열을 뒤집자

 

 


😺  느낀점

- 확실히 자바 알고리즘을 빠르게 풀려면 메서드를 잘 알아야 한다

 

 


*소스 코드는 다음 깃허브에 올라옵니다 -
 https://github.com/s0ooo0k/Algorithm_Study

 

GitHub - s0ooo0k/Algorithm_Study: Algorithm Study 문제 및 풀이

Algorithm Study 문제 및 풀이. Contribute to s0ooo0k/Algorithm_Study development by creating an account on GitHub.

github.com