❌ 실패 코드(런타임 에러) ❌
String을 계속해서 수정하는 코드라 그런지 런타임 에러가 났다.
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public int[] solution(String s) {
int[] result;
if(!s.contains(",")){
result = new int[1];
result[0] = Integer.parseInt(s.substring(2, s.length() - 2));
} else {
String[] bits = s.substring(2, s.length() - 2).split("},\\{");
Arrays.sort(bits, Comparator.comparingInt(String::length));
result = new int[bits.length];
for(int i=0; i<bits.length; i++){
String target = bits[i];
result[i] = Integer.parseInt(target);
for(int j=i+1; j<bits.length; j++){
if(bits[j].contains(target + ","))
bits[j] = bits[j].replace(target + ",", "");
else bits[j] = bits[j].replace("," + target, "");
}
}
}
return result;
}
}
✅ 성공 코드 ✅
String을 수정하는 대신 List와 int[]을 사용했다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
class Solution {
public int[] solution(String s) {
int[] result;
List<Integer> list = new ArrayList<>();
if(!s.contains(",")){
result = new int[1];
result[0] = Integer.parseInt(s.substring(2, s.length() - 2));
} else {
String[] bits = s.substring(2, s.length() - 2).split("},\\{");
Arrays.sort(bits, Comparator.comparingInt(String::length));
for(String bit : bits){
String[] temp = bit.split(",");
for(int i=0; i<temp.length; i++){
int num = Integer.parseInt(temp[i]);
if(!list.contains(num)) list.add(num);
}
}
result = new int[list.size()];
for(int i=0; i<list.size(); i++){
result[i] = list.get(i);
}
}
return result;
}
}
* 다른 분 풀이(참고용)
import java.util.*;
class Solution {
public int[] solution(String s) {
Set<String> set = new HashSet<>();
String[] arr = s.replaceAll("[{]", " ").replaceAll("[}]", " ").trim().split(" , ");
Arrays.sort(arr, (a, b)->{return a.length() - b.length();});
int[] answer = new int[arr.length];
int idx = 0;
for(String s1 : arr) {
for(String s2 : s1.split(",")) {
if(set.add(s2)) answer[idx++] = Integer.parseInt(s2);
}
}
return answer;
}
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스/자바] 공백으로 구분하기 2 (0) | 2023.05.12 |
---|---|
[프로그래머스/자바] 배열의 원소만큼 추가하기 (0) | 2023.05.12 |
[프로그래머스/자바] 타겟 넘버 (0) | 2023.05.11 |
[프로그래머스/자바] 순위 검색 (0) | 2023.05.10 |
[프로그래머스/자바] 특정한 문자를 대문자로 바꾸기 (0) | 2023.05.09 |