문제: https://school.programmers.co.kr/learn/courses/30/lessons/12939
class Solution {
public String solution(String s) {
String answer = "";
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// 숫자 개수 확인
String str = "";
str = s.replace(" ", "").replace("-", "");
int len = str.length();
String[] list = new String[len];
list = s.split(" ");
for(String c : list){
int num = Integer.parseInt(c);
if(num > max){
max = num;
}
if(num < min){
min = num;
}
}
answer += min + " " + max;
return answer;
}
}
이것도 뭔가 복잡하게 푼것 같은 느낌이 있다 우선 풀면서 의문이 갔던 부분들을 다시 살펴 보자
s.split(” “)를 하게 된다면 문자열을 반환하게 되는데 이것은 str 자체를 변환시키는 것일까?
String str = s.replace(" ", "").replace("-", "");
⇒ 원본 s는 건드리지 않는다.
기존에 list는 숫자를 설정해 준 상태에서만 값을 넣을 수 있다 생각해서, list의 숫자를 설정하는데 추가적인 작업이 소요됐다. 바로 삽입이 가능할까?
String str = "";
str = s.replace(" ", "").replace("-", "");
int len = str.length();
list = s.split(" ");
⇒ 별도의 길이를 지정해주지 않아도 된다.
String[] list = s.split(" ");
⇒ split() 메서드의 경우 배열의 크기가 split()의 결과에 따라 동적으로 결정되기 때문에 배열의 크기는 자동으로 설정된다.
이를 적용해서 리팩토링 해보쟈~
class Solution {
public String solution(String s) {
String answer = "";
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// 숫자 개수 확인
String[] list = s.split(" ");
for(String c : list){
int num = Integer.parseInt(c);
if(num > max){
max = num;
}
if(num < min){
min = num;
}
}
answer += min + " " + max;
return answer;
}
}
코드가 훨씬 간단해지는걸 확인할 수 있다! 뿌듯!
참 쉽쥬잉~?~?