Programmers/Lv.0

[프로그래머스][Lv.0][Java][HashMap] 한 번만 등장한 문자

dbssk 2023. 3. 27. 16:48

코딩테스트 연습 - 한 번만 등장한 문자 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.


제한사항
  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

풀이
  • 문자열 s를 나눈 것을 key값으로 하여 해시맵에 값을 추가한다.
getOrDefault(key, defaultValue)
key : 값을 가져와야 하는 요소의 키
defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
반환 값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환된다.
  • 알파벳 순으로 정렬하기 위해 map.keySet()을 List로 만들어 주고 sort() 메서드를 이용해 정렬한다.
  • 해당 key의 value가 1이라면 문자열 answer에 추가해준다.
import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        HashMap<String, Integer> map = new HashMap<>();
        
        for (String str : s.split("")) {
            map.put(str, map.getOrDefault(str, 0) + 1);
        }
        
        List<String> keyList = new ArrayList<>(map.keySet());
        keyList.sort(String::compareTo);
        for (String key : keyList) {
            if (map.get(key) == 1) {
                answer += key;
            }
        }
        
        return answer;
    }
}