문제 설명

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

 

제한 사항

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

풀이 방법

중복되는 문자를 찾으려면 반복문을 여러 번 사용하는 경우가 있지만 이 경우 너무 비효율적.

Set 사용하기!!

import java.util.*;

class Solution {
    public String solution(String my_string) {
        
        LinkedHashSet<Character> hs = new LinkedHashSet<>();
        
        for (char c : my_string.toCharArray()){
            hs.add(c);
        }
        
        StringBuilder sb = new StringBuilder();
        for (char ch : hs){
            sb.append(ch);
        }
        
        return sb.toString();
    }
}

1. LinkedHashSet을 사용한다. LinkedHashSet은 순서를 반영하는 LinkedList와 중복을 방지하는 HashSet으로 구성되어 있다. 제한 사항을 모두 만족하기 위해서 LinkedHashSet이 가장 적합하다.

2. StringBuilder를 사용해서 문자들을 하나의 문자열로 만들었다.

'Coding Test' 카테고리의 다른 글

[java] LinkedHashSet  (0) 2024.07.01
[Java] toCharArray()  (0) 2024.07.01
[python] 구슬을 나누는 경우의 수  (0) 2023.03.08
[python] 진료 순서 정하기  (0) 2023.03.07
[python] 외계행성의 나이  (0) 2023.03.07

+ Recent posts