문제
풀이
두 가지 방법을 생각했다. 1) int[] 배열을 그대로 사용하는 방법. 2) List 배열로 바꾼 후 사용하는 방법.
List배열을 이용하면 더 간단할 것 같았으나 문제에서는 int[] 배열을 주었기에 얘로 처음에 코드를 만들어 보았다.
1) int[] 배열을 그대로 사용하는 방법.
먼저 my_string의 숫자만 골라 넣은 int[] 배열을 생성해주려고보니 my_string 안의 숫자가 몇개가 있는지를 모르니까 answer의 길이를 모르니 answer 배열을 만들수가 없었다. 그래서 먼저 answer의 길이를 알기위해 count 변수를 초기화선언하고, for문과 toCharArray(), Character.isDigit()을 사용하여 my_string 문자열 안의 각각의 문자가 숫자라면 count 값이 올라가도록 한다.
그리고 답이 들어갈 answer 배열을 길이를 정해서 새로 만들어준다.
더해서 answer의 인덱스로 사용할 변수인 idx도 선언해준다.
for문을 이용해 my_string 문자열 안의 문자가 숫자라면 answer[idx] 자리에 들어가도록 한다. 이때, 숫자는 문자아기 때문에 Character.getNumericValue(str) 를 통해 숫자로 바꾸어 저장한다. 이렇게 해주는 이유는 숫자 오름차순으로 정렬할 것이기 때문이다.
그 후에 Arrays.sort() 메소드를 이용해 오름차순으로 숫자를 정렬한 후 반환한다.
2) List 배열로 바꾼 후 사용하는 방법.
동적 데이터 구조인 ArraysList<> 배열을 선언하면 따로 길이를 알지 않아도 된다.
따라서 먼저 List, ArraysList를 사용할 수 있도록 해당 패키지를 import한 후 List 배열을 선언한다.
for문, toCharArrays(), Character.isDigit()을 이용해서 my_string 문자열 안에서 숫자인 문자열을 골라내고 .add() 를 이용해서 Character.getNumericValue(str) 로 문자타입인 숫자들을 숫자타입으로 answer 배열 안에 넣는다.
List배열은 Arrays 패키지가 아닌 Colletions 패키지를 사용한다.
Collections.sort()를 이용해 answer 배열 속의 숫자들을 오름차순으로 정렬한 후 반환한다.
코드
1. int[] 배열 사용
import java.util.Arrays;
class Solution {
public int[] solution(String my_string) {
int count = 0;
for(char str : my_string.toCharArray()){
if(Character.isDigit(str)){
count++;
}
}
int[] answer = new int[count];
int idx = 0;
for(char str : my_string.toCharArray()){
if(Character.isDigit(str)){
answer[idx++] = Character.getNumericValue(str);
}
}
Arrays.sort(answer);
return answer;
}
}
2. List<> 배열 사용
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
class Solution {
public List<Integer> solution(String my_string) {
List<Integer> answer = new ArrayList<Integer>();
for(char str : my_string.toCharArray()){
if(Character.isDigit(str)){
answer.add(Character.getNumericValue(str));
}
}
Collections.sort(answer);
return answer;
}
}
'하루하루 > 프로그래머스 문제풀이' 카테고리의 다른 글
[Lv.0 - Java] 120815. 피자 나눠 먹기 (2) (0) | 2023.12.12 |
---|---|
[Lv.0 - Java] 120844. 배열 회전시키기 (0) | 2023.12.11 |
[Lv.0 - Java] 120851. 숨어있는 숫자의 덧셈 (1) (1) | 2023.12.07 |
[Lv.0 - Java] 120845. 주사위의 개수 (1) | 2023.12.07 |
[Lv.0 - Java] 120895. 인덱스 바꾸기 (0) | 2023.12.05 |