Blog

중복된 문자 제거

문제 #

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

  • 제한사항
    • 1 ≤ my_string ≤ 110
    • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
    • 대문자와 소문자를 구분합니다.
    • 공백(" “)도 하나의 문자로 구분합니다.
    • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
  • 입출력 예
    my_string result
    “people” “peol”
    “We are the world” “We arthwold”

나의 풀이 #

import java.util.*;

class Solution {
    public String solution(String my_string) {
        String[] strArr = my_string.split("");
        List<String> strList = new ArrayList<>();
        
        for(int i = 0; i<strArr.length; i++){
            if(strList.contains(strArr[i])==false){
                strList.add(strArr[i]);
            }
        }
        
        String answer = "";
        for (String s : strList){
            answer += s;
        }
        return answer;
    }
}
  • ArrayList를 사용하여 입력 문자열에서 찾은 고유한 문자를 저장합니다.
  • 입력 문자열을 개별 문자의 배열로 분할한 다음, 배열을 반복하여 각 문자가 이미 ArrayList에 있는지 확인합니다.
  • 문자가 ArrayList에 아직 없으면 목록에 추가합니다.
  • 마지막으로 ArrayList의 모든 고유 문자를 연결하여 출력 문자열을 형성합니다.

다른 사람의 풀이 #

import java.util.*;
class Solution {
    public String solution(String my_string) {
        String[] answer = my_string.split("");
        Set<String> set = new LinkedHashSet<String>(Arrays.asList(answer));

        return String.join("", set);
    }
}
  • ArrayList를 사용하는 대신 LinkedHashSet을 만들어 고유한 문자를 저장합니다.
  • Set은 요소의 중복을 허용하지 않는 컬렉션이며 LinkedHashSet은 요소가 집합에 추가될 때 순서를 유지하는 Set의 하위 클래스입니다.
  • LinkedHashSet를 사용하면 코드에서 문자의 원래 순서를 유지하면서 중복 항목을 자동으로 제거할 수 있습니다.
  • 마지막으로 join() 메서드를 사용하여 LinkedHashSet의 모든 문자를 연결하여 출력 문자열을 형성합니다.

관련개념 학습 #

  • 관련 개념을 찾아서 공부한 내용을 적는다.
  • ctrl + p로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.
  • 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.