문제 및 제한사항
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
**제한사항**
1 ≤ my_string ≤ 110
my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
대문자와 소문자를 구분합니다.
공백(" ")도 하나의 문자로 구분합니다.
중복된 문자 중 가장 앞에 있는 문자를 남깁니다.
풀이 방법
예를 들어 people이 주어졌을 때, p와 e는 중복되기 때문에 제거 되어 peol만 리턴되어야 한다.
먼저 문자 하나를 선택하고, 선택한 문자 앞으로 동일한 문자가 있는지 알아보기 위해 이중for문을 사용했다.
이 때 선택된 문자와 피선택된 문자들은 인덱스에서 1씩 차이가 있어야 한다. (앞자리니까)
선택된 문자와 피선택된 문자들을 비교했을 때 같다면 해당 문자를 splice로 잘라준다.
반례로 aaa라고 했을 때, a만 출력되어야 하는데 aa가 출력되는 것이었다.
대체 왜......? 한참을 싸매다가 챗지피티에 물어봤는데 이중for문의 안쪽의 변수를 j--로 적어주어야 하는 것이었다.
추가하지 않으면 중복된 문자가 제거된 후 다음 문자를 검사하는 반복문에서 중복된 문자 이후 위치를 검사하지 않아
여전히 중복된 문자가 남을 수 있는 것이다......
삭제했으니 -1을 해줘야 하는 걸로 이해했는데 내가 풀고도 100% 이해 못해서 상당히 찜찜하다.
그리고 다른 사람들 코드를 보니 Set을 써서 매우 간단히 풀던데 이 부분도 배워야 할 것 같다.
코드
let str = my_string.split("");
for (let i = 0; i < str.length; i++) {
for (let j = i+1; j < str.length+1; j++) {
if (str[i] == str[j]) {
str.splice(j, 1);
j--;
}
}
} return str.join('')
}
'⚙️ 코딩테스트' 카테고리의 다른 글
[JavaScript] 프로그래머스 코딩테스트 입문 : A로 B 만들기 (0) | 2023.03.28 |
---|---|
[JavaScript] 프로그래머스 코딩테스트 입문 : 모스부호 (1) (0) | 2023.03.28 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 문자열 정렬하기 (2) (0) | 2023.03.28 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 숫자 찾기 (0) | 2023.03.27 |
[JavaScript] 프로그래머스 코딩테스트 입문 : 약수 구하기 (0) | 2023.03.27 |