문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 <= my_string <= 110
- my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
- 대문자와 소문자를 구분합니다.
- 공백(" ")도 하나의 문자로 구분합니다.
- 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
입출력 예
my_string | result |
"people" | "peol" |
"We are the world" | "We arthwold" |
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;
}
}
for문으로 my_string의 길이만큼 순회합니다. if문에서 indexOf는 특정 문자의 위치를 찾습니다. 위의 코드의 경우 my_string.charAt(i), 즉 my_string의 i번째 문자를 my_string 문자열에서 찾는 것입니다. 그렇게 찾은 문자의 인덱스 위치와 i값을 비교합니다. indexOf는 처음으로 등장하는 문자 혹은 숫자를 반환하므로, 만약 중복값이 있다면 무시하게 될 것입니다. 그러므로 제한사항에서 원하는 '중복된 문자 중 가장 앞에 있는 문자를 남깁니다.' 라는 조건을 충족할 수 있습니다.
입출력 예를 예시로 들어보겠습니다. 'i = 0' 일 때, my_string의 0번째 문자는 p입니다. my_string.indexOf는 my_string 문자열에서 p의 위치를 찾을 것입니다. p의 위치는 0번 인덱스에 있으므로 i의 값과 일치하여 answer에 추가됩니다. 다만, 앞서 말했듯 indexOf는 '처음 등장하는 값'만을 반환하므로 'i = 3'일때의 charAt(i)에서 반환하는 두 번째 p와 indexOf에서 찾은 첫 번째 p의 인덱스와 일치하지 않으므로 무시하고 for문을 다시 반복하게 됩니다.
틀린 설명이 있을 수 있습니다. 혹시 틀린 설명이 있다면 알려주세요!
'프로그래머스 > Lv. 0(코딩테스트 입문)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 편지(Java) (0) | 2023.03.29 |
---|---|
[프로그래머스 코딩테스트] 삼각형의 완성조건(1)(Java) (0) | 2023.03.28 |
[프로그래머스 코딩테스트] 배열 원소의 길이(Java) (0) | 2023.03.28 |
[프로그래머스 코딩테스트] 숨어있는 숫자의 덧셈(1)(Java) (1) | 2023.03.27 |
[프로그래머스 코딩테스트] 문자열 정렬하기(1)(Java) (0) | 2023.03.27 |