STUDY/프로그래머스 코딩테스트

[코딩테스트 입문] 중복된 문자 제거

bameh 2022. 12. 24. 01:21

[문제 설명]

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

 

[제한사항]

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

 

[입출력 예]

 

my_string 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합니다.

 

 

[풀이]

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

 

1. my_string의 길이만큼 for문을 이용하여 반목문을 실행한다.

 

2. if문을 통해 중복되지 않은 문자를 확인한다.

if ( my_string.indexOf(my_string.charAt(i)) == i )

     (2-2)       (2-1)     (2-3)

2-1) my_string에서 검색할 문자를 찾는다.

2-2) 2-1에서 찾은 문자가 몇 번째 인덱스에 있는지 확인한다.

2-3) indexOf는 앞에서부터 검색을 진행한다. 검색한 문자가 현재 인덱스와 동일한지 확인한다.

  이 때, 중복 여부를 확인할 수 있다.

 

만약 문자열이 people이라면 두 번째 p를 검색하면 i는 3이지만 indexOf에서는 0을 출력하기 때문에 중복되는 것을 확인할 수 있다.

위와 같은 방식으로 인덱스를 이용해서 문자를 검색하고, 중복되지 않은 문자일 때 answer에 값을 추가한다.