이코테로 유명한 [이것이 코딩테스트다]로 알고리즘 공부를 요즘 하고 있습니다 ✏️
그런데, 파이썬에서 자바로 전향한 지 얼마 안 된 시점이라 그런지 자바 문법에 익숙치 않았습니다.
ex. 자바에서 int를 String으로 바꾸는 메소드나 방법이 뭐가 있지? 😕
따라서 (1) 프로그래머스 1, 2, ..레벨 풀기 + (2) 벨로그에 고전했던 프로그래머스 문제 및 풀이 포스팅 하기 + (3) 자바 문법에 익숙해지기 순서로 진행해보겠습니다.
작심삼일이 되지 않도록 노력해볼게요 😃
자연수 뒤집어 배열로 만들기
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입/출력 예
n = 12345 / return [5,4,3,2,1]
풀이 1
// n = 12345
class Solution {
public int[] solution(long n) {
// ""(String) + int = String
// String a = "12345"
String a = "" + n;
// String a.length와 동일한 int array 생성
// answer = [ , , , , ]
int[] answer = new int[a.length()];
int cnt = 0;
while(n > 0) {
// n은 long 타입이므로 int 형 변환
// n의 맨 오른쪽 자릿수를 저장
// answer[0] = 5
answer[cnt] = (int)(n % 10);
// n의 맨 오른쪽 자릿수를 제거
// n = 1234
n /= 10;
System.out.println(n);
cnt ++;
}
return answer;
}
}
위 풀이의 핵심은 다음과 같습니다.
1) String("") + int = String (= String.valueOf())
2) int[] answer = new int[a.length()];
3) answer[cnt] = (int)(n % 10);
4) n /= 10;
풀이 2
// n = 12345
class Solution {
public int[] solution(long n) {
// n = "12345"
String s = String.valueOf(n);
StringBuilder sb = new StringBuilder(s);
// n = "54321"
sb = sb.reverse();
// n = ["5", "4", "3", "2", "1"]
String[] ss = sb.toString().split("");
// answer = { , , , , }
int[] answer = new int[ss.length];
for (int i = 0; i < ss.length; i ++) {
// answer[0] = 5
answer[i] = Integer.parseInt(ss[i]);
}
return answer;
}
}
위 풀이의 핵심은 다음과 같습니다.
1) String.valueOf();
2) StringBuilder sb = new StringBuilder();
3) sb.reverse();
4) String[] ss = sb.toString[].split("");
5) answer[i] = Integer.parseInt(ss[i]);
풀이 3
import java.util.*;
// n = 12345
class Solution {
public static int[] solution(long n) {
// n = "12345"
String str = String.valueOf();
// arr = ['1', '2', '3', '4', '5']
char[] arr = str.toCharArray();
// answer = { , , , , }
int[] answer = new int[arr.length];
for (int i = 0, j = arr.length - 1; i < arr.length && j >= 0; i ++, j --) {
// answer[0] = 5
answer[i] = Character.getNumericValue(arr[j]);
}
return answer;
}
}
위 풀이의 핵심은 다음과 같습니다.
⭐ int → String → char array → int array
1) String.valueOf();
2) str.toCharArray();
3) for (int i = 0, j = arr.lengh - 1; i < arr.length && j >= 0; i ++, j --)
4) answer[i] = Character.getNumericValue();
풀이 3은 참고로 제가 풀이한 풀이이니, 더 자세한 설명이 보고 싶으시다면 아래의 링크를 통해 확인하세요
자연수 뒤집어 배열로 만들기와 같은 문제는 필수 개념이니 알아두는 게 좋을 것 같습니다 🍰