[프로그래머스] Lv.0 중복된 문자 제거.java

김엄지·2024년 4월 27일

알고리즘

목록 보기
73/90

문제 설명

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

제한사항

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

입출력의 예

문제 풀이 - 1

import java.util.LinkedHashSet;

class Solution {
    public String solution(String my_string) {
        String answer = "";
        LinkedHashSet<String> set = new LinkedHashSet<>();
        
        String[] arr = my_string.split("");
        
        for(String s : arr) {
            set.add(s);
        }
        answer = String.join("", set);
        
        return answer;
    }
}
  1. LinkdedHashSet을 이용해서 중복 문자를 제거하고, 순서를 유지한다.
  2. 문자열을 각 문자 단위로 분리한다.
  3. 반복문으로 set에 추가한다.
  4. 중복이 제거된 문자열을 String 형태로 변환한다.

문제 풀이 - 2

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. 조건문으로 indexOf() 메서드를 이용해서 my_string.charAt(i)의 인덱스 값이 i와 일치한다면, 그 문자는 앞에 있는 문자들과 중복되지 않았음을 의미하므로 answer에 추가해준다.
  2. 중복 문자를 제거한 결과를 반환한다.

✅ Java의 Set 자료구조

  • Set은 중복을 허용하지 않고, 원소의 순서를 보장하지 않는 특징을 갖고 있어 다양한 상황에서 유용하게 사용된다.
  • Set 인터페이스를 구현한 HashSet, TreeSet, LinkedHashSet 등의 클래스를 활용하여 데이터를 효율적으로 관리할 수 있다.
  • 이를 활용하여 중복을 제거하거나 원소의 유일성을 확인하는 등 다양한 작업을 수행할 수 있다.
  • LinkdedHashSet이라는 순서를 보장해준다.

✅ indexOf() 메서드

indexOf() 메서드는 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치(인덱스)를 반환하는 메서드이다. 즉, 특정 문자열의 위치를 찾고자 할 때 사용한다.


참고자료
https://akku-dev.tistory.com/62#google_vignette
https://velog.io/@gun_123/Java%EC%9D%98-Set-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%A4%91%EB%B3%B5%EC%9D%84-%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EC%BB%AC%EB%A0%89%EC%85%98
https://dhdh-study.tistory.com/106

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글