https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 나의 풀이
✅ X, Y 문자열 ➡︎ <정수, 갯수> 로 이루어진 해시맵 xArr, yArr
- HashMap<String, Integer> ➡︎ 문자열로 이루어져 있기 때문에 형변환 없이 정수 사용하기 위함
- xArr.put(key, xArr.getOrDefault(key, 0)+1); ➡︎ 해당 key 의 값이 이미 있다면 +1, 없다면 초기값 0
✅ xArr, yArr 에 공통으로 들어있는 숫자 리스트 commonList ➡︎ 이후에 내림차순 정렬하기 위해 리스트 사용
- ArrayList<String> ➡︎문자열 String, 정수 Integer 모두 내림차순 정렬이 가능하므로, 형변환 없이 사용하기 위함
✅ commonList 에 같은 숫자가 공통으로 여러번 들어갈 경우
ex) X = "5525", Y = "1255" 일 때, commonList = ["2", "5", "5"] 으로 3을 2번 더해줘야함
- xArr ➡︎ {2=1, 5=3}
- yArr ➡︎ {1=1, 2=1, 5=2}
- commonList ➡︎ [2, 5, 5]
따라서 xArr, yArr 의 같은 정수 key의 value인 갯수가 적은 쪽의 갯수만큼 commonList에 추가해줘야함
➡︎ int cnt = Math.min(xArr.get(key), yArr.get(key));
✅ 리스트 정렬
- Collections.sort(commonList); ➡︎ 오름차순
- Collections.sort(commonList, Collections.reverseOrder()); ➡︎ 내림차순
- 나의 코드
import java.util.*;
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
// <정수, 갯수> 해시맵
HashMap<String, Integer> xArr = new HashMap<>();
HashMap<String, Integer> yArr = new HashMap<>();
//공통 숫자 리스트
ArrayList<String> commonList = new ArrayList<>();
for(String key : X.split("")) {
xArr.put(key, xArr.getOrDefault(key, 0)+1);
}
for(String key : Y.split("")) {
yArr.put(key, yArr.getOrDefault(key, 0)+1);
}
//System.out.println(xArr);
// commonList 채우기
for(String key : xArr.keySet()) {
if(yArr.containsKey(key)) {
//같은 숫자가 공통으로 여러번 들어갈 경우
int cnt = Math.min(xArr.get(key), yArr.get(key));
for(int i=0; i<cnt; i++) {
commonList.add(key);
}
}
}
//비어있으면 -1
if(commonList.size() == 0) {
return "-1";
}
//리스트 정렬 내림차순
Collections.sort(commonList, Collections.reverseOrder());
//정렬 후, 첫번째가 0이면 0
if(commonList.get(0).equals("0")) {
return "0";
}
//for _ answer.append
for(String s : commonList) {
answer.append(s);
}
return answer.toString();
}
}
'공부 > 알고리즘' 카테고리의 다른 글
구명보트 (0) | 2024.11.05 |
---|---|
기능개발 (0) | 2024.11.04 |
2019 카카오 개발자 겨울 인턴십 > 크레인 인형뽑기 게임 (0) | 2024.11.02 |
N-Queen (0) | 2024.11.01 |
2019 KAKAO BLIND RECRUITMENT > 실패율 (1) | 2024.11.01 |