loading
본문 바로가기
Coding/Programers

[ Programmers ] 한 번만 등장한 문자 ( java )

by NeuLyeo 2023. 12. 26.

[ Programmers ] 한 번만 등장한 문자 ( java )

 

프로그래머스

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

programmers.co.kr

 

 

 

 

📚 Table of Contents

     

     

     

     

    문제

    문제 설명

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

     

     

    제한사항

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

     

     

    입출력 예

     

     

     

     

    문제 풀이

    문제 접근

    1. 클래스 및 함수 정의:

    • class Solution: 솔루션을 담고 있는 클래스를 정의합니다.
    • public String solution(String s): 문자열 s를 입력받아 문자열을 반환하는 함수입니다.

     

    2. TreeMap 생성:

    • TreeMap<String, Integer> tm = new TreeMap<>();: 문자와 문자의 개수를 저장할 TreeMap을 생성합니다. TreeMap을 사용하여 문자를 자동으로 정렬합니다.

     

    3. 문자의 개수 계산:

    • for(String c : s.split("")){ ... }: 입력 문자열을 문자 단위로 쪼개어 반복하면서 다음을 수행합니다.
      • tm.put(c, tm.getOrDefault(c, 0) + 1);: 현재 문자가 TreeMap에 존재하면 값을 1 증가시키고, 존재하지 않으면 0을 기본값으로 설정한 후 1로 초기화합니다.

     

    4. 한 번만 등장하는 문자 추출:

    • StringBuilder sb = new StringBuilder();: 결과 문자열을 만들기 위한 StringBuilder를 생성합니다.
    • for(Map.Entry<String, Integer> entry : tm.entrySet()) { ... }: TreeMap의 모든 항목을 반복하면서 다음을 수행합니다.
      • if (entry.getValue() == 1) { ... }: 문자의 개수가 1인 경우 다음을 수행합니다.
        • sb.append(entry.getKey());: StringBuilder에 해당 문자를 추가합니다.

     

    5. 결과 반환:

    • return sb.toString();: 추출된 문자들을 문자열로 만들어 반환합니다.

     

    코드의 역할:

    이 코드는 입력 문자열에서 한 번만 등장하는 문자들을 추출하여 정렬된 순서로 반환하는 역할을 합니다.

     

     

     

    풀이

    import java.util.*;
    class Solution {
        public String solution(String s) {
            TreeMap<String, Integer> tm = new TreeMap<>();
    
            for(String c : s.split("")){
                tm.put(c, tm.getOrDefault(c, 0) + 1);
            }
    
            StringBuilder sb = new StringBuilder();
            for(Map.Entry<String, Integer> entry : tm.entrySet()) {
                if (entry.getValue() == 1) {
                    sb.append(entry.getKey());
                }
            }
    
            return sb.toString();
        }
    }