문제: https://school.programmers.co.kr/learn/courses/30/lessons/131128
1. 코드
import java.util.*;
class Solution {
public String solution(String X, String Y) {
int[] arr1 = new int[10];
int[] arr2 = new int[10];
for(String s : X.split("")) {
arr1[Integer.parseInt(s)]++;
}
for(String s : Y.split("")) {
arr2[Integer.parseInt(s)]++;
}
StringBuilder answer = new StringBuilder("");
for(int i = 9; i >= 0; i--) {
while(arr1[i]-- > 0 && arr2[i]-- > 0) {
answer.append(i);
}
}
if(answer.toString().isBlank())
answer.append("-1");
else if(answer.toString().charAt(0) == '0')
answer = new StringBuilder("0");
return answer.toString();
}
}
2. 설명
카운트 정렬과 유사한 방식으로 문자열의 0부터 9까지 값을 읽어 해당 인덱스 위치에 값을 증가시키고 큰 수부터 x와 y가 가지고 있는 개수만큼 answer에 추가시킨다.
3. 정리
- 이 문제에 대해서 너무 깊게 생각하여 시간초과가 계속 발생한다.
- 카운트 정렬을 이용하여 간단화시켜야 한다.
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 42862번: 체육복 [Java] (0) | 2023.08.06 |
---|---|
프로그래머스 - 133499번: 옹알이 (2) [Java] (0) | 2023.08.05 |
프로그래머스 - 77484번: 로또의 최고 순위와 최저 순위 [Java] (0) | 2023.08.03 |
프로그래머스 - 17682번: [1차] 다트 게임 [Java] (0) | 2023.08.02 |
프로그래머스 - 136798번: 기사단원의 무기 [Java] (0) | 2023.08.01 |