
📝 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
'TIL > 알고리즘' 카테고리의 다른 글
[JAVA] 프로그래머스 | 12933 정수 내림차순으로 배치하기 (0) | 2025.04.15 |
---|---|
[JAVA] 프로그래머스 | 12906 같은 숫자는 싫어 (1) | 2025.04.14 |
[JAVA] 프로그래머스 | 181866 문자열 잘라서 정렬하기 (0) | 2025.04.10 |
[JAVA] 프로그래머스 | 42746 가장 큰 수 (0) | 2025.04.09 |
[Java] 프로그래머스 | 120880 특이한 정렬 (1) | 2025.04.09 |