Programmers | 코딩테스트 입문 - 한 번만 등장한 문자(자바,파이썬), HashMap key값으로 정렬하기

2023. 1. 4. 14:43공부/Programmers

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

 

 

 

JAVA

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        HashMap<String,Integer> map = new HashMap<>();
        
        for(int i=0; i<s.length(); i++){
            String c = s.substring(i,i+1);
            if(!map.containsKey(c)){
                map.put(c, 1);
            }else{
                map.put(c, map.get(c)+1);
            }
        }
        
        List<String> keyList = new ArrayList<>(map.keySet());
        Collections.sort(keyList);  //정렬
        
        
        
        for(String k : keyList){
            if(map.get(k) == 1){
                answer += k;
            }
        }

        
        return answer;
    }
}

1. HashMap에 key값은 영문자, value는 해당 영문자갯수를 삽입했다.

2. HashMap은 순서가 없는 구조이기 때문에, key값만 갖는 list로 변환하여 정렬했다.

3. 정렬한 list 순서대로 해당 key의 value가 '1'인 경우에만 String(answer)에 더했다.

원래는 String에 담은 후에 문자열 정렬을 하려고 했지만, 안먹혀서 오래 걸렸지만 덕분에 HashMap 정렬 방법을 배웠다.

 

Python3

def solution(s):
    return ''.join(sorted([i for i in s if s.count(i) == 1]))