알고리즘

[알고리즘]프로그래머스-한 번만 등장한 문자(해시테이블을 곁들인,List의 정렬 방법)

seulhasony 2023. 5. 29. 14:30

 

https://school.programmers.co.kr/learn/courses/30/lessons/120896

 

프로그래머스

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

programmers.co.kr

 

문제

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

 

나의 풀이

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        HashMap<Character,Integer> map = new HashMap<>();
        List<String> strList = new ArrayList<>();
        
        for(char c : s.toCharArray()){
            map.put(c,map.getOrDefault(c,0)+1);
        }
        
        for(char key : map.keySet()){
            if(map.get(key) == 1){
                strList.add(String.valueOf(key));
            }
        }
        Collections.sort(strList);
        
        for(String str : strList){
            answer += str;
        }
        
        return answer;
    }
}

 

활용한 주요 메소드 정리

메소드명 설명
getOrDefault() 문자열의 개수를 세는 문제에서 빠지지 않는 hashMap의 중요 메소드이다.
문자열을 키값으로 넣고 없을 경우는 0을 입력할 수 있다.
그렇게 하면 처음 들어오는 값도 초기화 할 수 있고 다음 들어오는 값은 이전 입력한 데이터를 가져오는 것도 가능하다

map.put(key,getOrDefault(key,0)+1);
toCharArray() 문자열을 char형 배열로 변환하는 메소드이다.
문자열을 하나하나 for문으로 탐색해야 할 경우 사용된다.

for( char c : s.toCharArray()){
}
Collections.sort(); List를 오름차순으로 정리할 때 사용되는 컬렉션이다.
Collection.sort(list, Collections.reverseOrder()); //내림차순의 방법이다.