문제
입출력 예
풀이.
1. X,Y에 포함된 0~9의 숫자의 개수를 세기 위한 배열을 각각 선언
2. X,Y의 크기만큼 반복문을 돌면서 0~9까지 해당하는 인덱스에 값을 1씩 추가 (char형의 숫자에 '0' 의 문자를 빼면 아스키코드 계산으로 숫자로 계산됨)
3. 이후 가장 큰 수를 나타내야하므로 역순으로 9~0 까지 반복문을 돌며 x,y 중 더 개수가 적은 수 만큼 반복하며 answer에 문자 추가
ex) X - "100" , Y - "123450" 일 때 X는 '0'이 2개이고 '1'이 1개 Y는 0~5까지 각 1개씩 이므로 더 개수가 적은 수 만큼 반복해서 최종적으로 "10" 이된다.
4.마지막으로 만약 같은 값이 없을시 -1을 반환, 첫문자가 0일시 0이외에 숫자는 같은값이 없고, 0이 2개씩 포함된경우 "00" 이되어 첫문자가 0이라면 0을 반환 , 그 이외의 값은 그대로 String형태로 반환
> StringBuilder를 이용하기전엔 시간초과 에러가떠서 StringBuilder를 활용해서 해결
코드
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int x[] = new int[10];
int y[] = new int[10];
for(int i=0;i<X.length();i++){
x[X.charAt(i)-'0']++;
}
for(int i=0;i<Y.length();i++){
y[Y.charAt(i)-'0']++;
}
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.charAt(0)=='0')
return "0";
else
return answer.toString();
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
(LEVEL 1)프로그래머스 - 같은 숫자는 싫어(JAVA) (0) | 2023.01.30 |
---|---|
(LEVEL 1)프로그래머스 - 로또의 최고 순위와 최저 순위(JAVA) (0) | 2023.01.18 |
(LEVEL 1)프로그래머스 - 햄버거 만들기(JAVA) (0) | 2023.01.14 |
(LEVEL 1)프로그래머스 - 가장 가까운 같은 글자(JAVA) (0) | 2023.01.12 |
(LEVEL 0)프로그래머스 - 369게임(JAVA) (0) | 2023.01.10 |