FireDrago
Lv0 - 중복문자 제거 (자바) 본문
문제설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
입출력예
| my_string | result |
| "people" | "peol" |
| "We are the world" | "We arthwold" |
생각정리
1. 처음에는 저장순서가 있으면서, 중복허용 하지 않는 LinkedHashSet 사용해서 풀었다.
import java.util.*;
class Solution {
public String solution(String my_string) {
String answer = "";
LinkedHashSet<Character> hs = new LinkedHashSet<>();
for (int i=0; i<my_string.length(); i++) {
hs.add(my_string.charAt(i));
}
for (char ch : hs) {
answer += ch;
}
return answer;
}
}
문제는 해결했으나 , 시간이 너무 길게 걸렸고 다른 방법을 생각해보았다.
1. indexOf( ) 메서드의 특성을 활용할 수 있다.
- 이 메서드는 char 값이 중복될 경우 가장 앞의 index를 반환한다.
2. 이를 이용해 for 문의 i가 my_string 의 indexOf( ) 와 일치할때만 String answer 에 더해주는 방법을 사용했다.
String answer = "";
for (int i=0; i<my_string.length(); i++){
if (i == my_string.indexOf(my_string.charAt(i)) {
answer += my_string.charAt(i);
}
}
return answer;'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| Lv0 - 삼각형의 완성 (2) (자바) (0) | 2023.06.17 |
|---|---|
| Lv0 - 소인수분해 (0) | 2023.06.13 |
| Lv0 - 공던지기 (자바) (0) | 2023.06.08 |
| Lv0 - 팩토리얼 (자바) (0) | 2023.06.07 |
| Lv0 - 약수 구하기 (약수 알고리즘)(자바) (0) | 2023.06.06 |
