문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_string ≤ 110 my_string은 대문자, 소문자, 공백으로 구성되어 있습니다. 대문자와 소문자를 구분합니다. 공백(" ")도 하나의 문자로 구분합니다. 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
나의 코드
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0; i<my_string.length(); i++) {
if(my_string.indexOf(my_string.charAt(i)) == i) {
answer += my_string.charAt(i);
}
}
return answer;
}
}
다른 사람 코드
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);
}
}
Set
활용
느낀 점
indexOf()
함수를 사용하여 만약 i번째 값이 현재 인덱스가 아니라 그 전 인덱스에 존재했다면, 값이 다르므로 if
조건문에 해당하지 않아 answer
에 추가되지 않는다. 즉, 이미 나왔던 중복된 값은 무시한다는 것!
다른 사람 코드에서는 중복을 허용하지 않는 Set
을 활용하여 문제를 풀어냈다.