[Coding Test] 프로그래머스 JAVA 한 번만 등장한 문자 - HashMap

LeeSeungEun·2023년 5월 11일
0

Coding Test

목록 보기
9/38

1. 문제

2. 코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        HashMap<Character, Integer> hM = new HashMap<>();
        for (Character x : s.toCharArray()) {
            hM.put(x, hM.getOrDefault(x, 0) + 1);
        }
        List<Character> list = new ArrayList(hM.keySet());
        Collections.sort(list);
        for (Character key : list) {
            if (hM.get(key) == 1) {
                answer += key;
            }
        }
        return answer;
    }
}
import java.util.*;

class Solution {
    public String solution(String s) {
        HashMap<Character, Integer> sH = new HashMap<>();
        for (char x : s.toCharArray()) {
            sH.put(x, sH.getOrDefault(x, 0) + 1);
        }
        StringBuilder sb = new StringBuilder();
        for (char key : sH.keySet()) {
            if (sH.get(key) == 1) sb.append(key);
        }
        String tmp = sb.toString();
        char[] answer = tmp.toCharArray();
        Arrays.sort(answer);
        return String.valueOf(answer);
    }
}

3. 풀이

  • HashMap<Character, Integer> hM = new HashMap<>();: 문자와 등장 횟수를 저장하기 위한 HashMap 객체 hM을 생성한다.
  • for (Character x : s.toCharArray()) { hM.put(x, hM.getOrDefault(x, 0) + 1); }: 문자열 s를 순회하며 각 문자를 HashMap에 저장한다. 이미 등장한 문자일 경우 해당 문자의 등장 횟수를 1 증가시키고, 처음 등장한 문자일 경우 1로 초기화한다.
  • List list = new ArrayList<>(hM.keySet());: HashMap의 키(key)들을 ArrayList에 저장한다. 이렇게 하면 중복되지 않는 문자들이 리스트에 포함된다.
  • Collections.sort(list);: 리스트 내의 문자들을 오름차순으로 정렬한다.
  • for (Character key : list) { if (hM.get(key) == 1) { answer += key; } }: 정렬된 리스트를 순회하며 각 문자에 대해 HashMap에서 해당 문자의 등장 횟수를 확인한다. 등장 횟수가 1인 경우에만 결과 문자열 answer에 추가한다.
  • return answer;: 결과 문자열 answer를 반환한다.

4. 링크

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

0개의 댓글