JAVA/프로그래머스 코딩테스트 입문

[프로그래머스 LV.0] 중복된 문자 제거

sundori 2024. 12. 10. 16:13

목차

     

    문제 설명

    문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.


    제한사항

    • 1 ≤ my_string ≤ 110
    • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
    • 대문자와 소문자를 구분합니다.
    • 공백(" ")도 하나의 문자로 구분합니다.
    • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
    import java.util.LinkedHashSet;
    
    class Solution {
        public String solution(String my_string) {
            // LinkedHashSet을 사용하여 입력 순서를 유지하면서 중복 제거
            LinkedHashSet<Character> set = new LinkedHashSet<>();
            StringBuilder answer = new StringBuilder();
            
            for (char ch : my_string.toCharArray()) {
                // 문자 중복 검사 및 처리
                if (!set.contains(ch)) {
                    set.add(ch); // 중복 방지를 위해 Set에 추가
                    answer.append(ch); // 결과 문자열에 추가
                }
            }
            
            return answer.toString();
        }
    }

     

    코드 설명

    1. LinkedHashSet: 삽입된 순서를 유지하며 중복된 값을 허용하지 않는다.
    2. StringBuilder: 문자열을 효율적으로 조합하기 위해 사용한다.
    3. for-each 루프: 문자열을 문자 배열로 변환하여 순회.
    4. 조건문: set.contains(ch)를 통해 중복 여부를 확인하고, 중복이 아니라면 set.add(ch) 및 answer.append(ch) 수행.