728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131128
생각
- 생각을 하고, 구현하는 정도의 수준이 Lv1 이라면, 나는 그정도는 되는 것 같다는 생각이 들었다.
코드
- 약간 괴랄하긴 한데,, 해시값에 넣어놓고 맞으면 우선순위 큐에 넣어놨다.
- 다 배웠던 알고리즘이라 했는데 처음에는 실패했다.
- StringBuilder 를 사용하여 통과했다.
import java.util.Collections;
import java.util.HashMap;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
System.out.println(solution("1002", "30005")); // 2
System.out.println(solution("100" ,"2345")); // 2
System.out.println(solution( "12321", "42531")); // 5
System.out.println(solution("100", "123450")); // 0
}
public static String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
HashMap<Character , Integer> hashMap = new HashMap<>();
PriorityQueue<Character> queue = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < X.length(); i++) {
hashMap.put(X.charAt(i),hashMap.getOrDefault(X.charAt(i),0)+1);
}
for (int i = 0; i < Y.length(); i++) {
if(hashMap.getOrDefault(Y.charAt(i),0) > 0){
queue.add(Y.charAt(i));
hashMap.put(Y.charAt(i),hashMap.get(Y.charAt(i))-1);
}
}
if(queue.isEmpty()) return ""+-1;
if('0' == queue.peek()) return ""+0;
int size = queue.size();
for (int i = 0; i < size; i++) {
answer.append(queue.poll());
}
return answer.toString();
}
}
다른 사람 풀이
public class Main {
public static void main(String[] args) {
System.out.println(solution("1002", "30005")); // 2
System.out.println(solution("100" ,"2345")); // 2
System.out.println(solution( "12321", "42531")); // 5
System.out.println(solution("100", "123450")); // 0
}
public static 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();
}
}
}
728x90
반응형
'Dev > Algorithm' 카테고리의 다른 글
[프로그래머스] 삼총사 - Java (0) | 2024.05.29 |
---|---|
[프로그래머스] 옹알이(2) - Java (0) | 2024.05.28 |
[프로그래머스] 햄버거 만들기 - Java (0) | 2024.05.24 |
[프로그래머스] 푸드 파이트 대회 (0) | 2024.05.24 |
[프로그래머스] 과일 장수 - Java (0) | 2024.05.24 |