개발자도전
[프로그래머스] 중복된 문자 제거 본문
728x90
[문제]
문자열 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합니다.
[답]
풀이 1.
처음엔 stack으로 풀어보려고 코드를 작성했다.
0번째 my_string을 먼저 stack에 넣어주고 1번 인덱스부터 for문을 돌려주었다.
그런데 stack은 후입선출법을 따라 저장이 되어 답이 나왔지만 답과는 순서가 거꾸로된 답이 출력이 되었다.
그래서 StringBuilder 함수를 사용해 answer을 반전시켜주고 toString을 사용해 문자열로 바꿔주었다.
코드가 너무 길고 시간도 안좋게 나와서 다른 사람의 풀이를 보게되었다.
중복을 허용하지 않는 Set 자료구조형을 따라서 작성한 코드를 보게 되어 작성해보았다.
풀이 2.
일단 Set은 중복은 허용하지 않지만 순서를 보장해주지 않는다.
그래서 HashSet이 아닌 LinkedHashSet 함수를 사용하여 my_string을 배열에 담았던 str을 저장해주었다.
그렇게 중복이 사라진 set값을 answer에 String으로 바꿔 join 시켜주어 return 시켰다.
728x90
'프로그래머스 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 가까운 수 (0) | 2023.04.01 |
---|---|
[프로그래머스] 삼각형의 완성 조건 (0) | 2023.04.01 |
[프로그래머스] 배열 원소의 길이 (0) | 2023.03.30 |
[프로그래머스] 컨트롤 제트 (0) | 2023.03.30 |
[프로그래머스] 소인수분해 (0) | 2023.03.24 |
Comments