class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int[] x = {0,0,0,0,0,0,0,0,0,0};
int[] y = {0,0,0,0,0,0,0,0,0,0};
for(int i=0; i<X.length();i++){
x[X.charAt(i)-48] += 1;
}
for(int i=0; i<Y.length();i++){
y[Y.charAt(i)-48] += 1;
}
for(int i=9; i >= 0; i--){
for(int j=0; j<Math.min(x[i],y[i]); j++){
answer.append(i);
}
}
if("".equals(answer.toString())){
return "-1";
}else if(answer.toString().charAt(0)==48){
return "0";
}else {
return answer.toString();
}
}
}
▶ char형끼리 뺄셈을 하거나 char형과 int형을 뺄셈하는 경우 char형이 아스키코드로 바뀌어서 정수연산이 수행된다.
▶ X.charAt() 메서드의 리턴타입은 char형이며 48은 int형이기 때문에
char형이 아스키코드로 바뀌면서 정수연산이 수행된다.
▶ 48은 아스키 코드인 '0'(문자0)에 해당하며, 48을 뺄셈해주는 역할을 char형의 숫자를 int형 숫자로 전환시켜준다.
▶ X.charAt()-48 은 char형 - int형 연산이며,
▶ X.charAt()-'0' 은 char형 - char형 연산이다.
▶ X.chartAt() 와 '0'(숫자문자) 모두 아스키코드에 해당하는 정수로 치환되므로
▶ 위의 두 식은 차이가 없다.
▶ answer문자열을 코드상으로 숫자문자열을 내림차순으로 정렬하는데,
▶ 내림차순으로 정렬하였는데,
▶ answer.toString().charAt(0)==48
▶ 가장 앞에 인덱스0에 해당하는 값이 '0'(숫자문자 '0'=아스키코드 48)가 같다는 의미는
▶ answer문자열의 모든요소가 '0'으로 되어있다는 의미한다.
▶ 내림차순으로 하였는데, 숫자 문자 '0' 이 가장 앞에 왔다는 의미는
▶ 모든 문자가 '0' 으로 되어있다는 의미한다.
'프로그래머스(자바) > LV.1(자바)' 카테고리의 다른 글
폰켓몬→ boxed()★+ collectingAndThen() (0) | 2022.12.21 |
---|---|
키패드 누르기★★ (0) | 2022.12.20 |
과일장수→ 내림차순 정렬★★ + 우측에서 좌측으로 접근★★ (0) | 2022.12.20 |
완주하지 못한 선수→ getOrDefault() 각 요소 갯수 세기★★ (0) | 2022.12.19 |
다트 게임→ 마지막에서 값을 remove★ 하고 싶은 경우 + 마지막에서 두번 째에서 값을 remove★하고 싶은 경우+ map자료형 (0) | 2022.12.19 |