1 minute read

중복된 문자 제거

문제 설명

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


제한사항

  • 1 ≤ my_string ≤ 110
  • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(“ “)도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

입출력 예

my_list result
“people” “peol”
“We are the world” “We arthwold”

입출력 예 설명

입출력 예 #1

  • “people”에서 중복된 문자 “p”와 “e”을 제거한 “peol”을 return합니다.

입출력 예 #2

  • “We are the world”에서 중복된 문자 “e”, “ “, “r” 들을 제거한 “We arthwold”을 return합니다.

나의 풀이 코드

import java.util.*;

class Solution {
    public String solution(String my_string) {
        String answer = "";
        ArrayList<String> list = new ArrayList<>(); // 새롭게 넣을 리스트
        
        
        String[] strarr = my_string.split(""); //문자열을 배열로 변환
        ArrayList<String> strlist = new ArrayList<String>(Arrays.asList(strarr)); //배열을 리스트로 변환
        
        for (int i=0; i<my_string.length(); i++){
            if (!list.contains(strlist.get(i))){ //list에 없으면 값 넣기(있으면 값 안넣음)
                list.add(strlist.get(i));
            }
        }
        
        
        answer = String.join("", list);
        return answer;
    }
}

문자열을 다루는것이 익숙치가 않다. 계속 해보자.

배운점

import java.util.stream.Collectors;

class Solution {
    public String solution(String my_string) {
        return my_string.chars()
                .mapToObj(Character::toString)
                .distinct()
                .collect(Collectors.joining());
    }
}

다른 사람이 푼 코드인데
문자열을 문자(char) 스트림으로 변환하고,
각 문자를 문자열로 변환하여 스트림의 요소를 변경하고,
중복된 문자를 제거하고,
스트림의 요소들을 문자열로 결합한다.

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);
    }
}

다른 사람이 푼 또 다른 코드인데 정말 쉽게 풀었다.
문자열을 split해서 배열로 바꾸고 LinkedHashSet의 속성을 이용하여 원래 순서를 유지하며 중복을 제거한다.
이후 join한다.

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public String solution(String myString) {
        return Arrays.stream(myString.split("")).distinct().collect(Collectors.joining());
    }
}

다른 사람이 푼 또 다른 코드인데 이 또한 간단하다.
문자열 배열로 split후 스트림으로 변환하고,
.distinct로 중복을 제거후,
join한다.

Leave a comment