코드

import java.util.Arrays;

public class 중복문자제거_ {
    public static void main(String[] args) {
        String value = "112233112ㅁㄴㅇㅁㄴㅇ2334551123";
        String answer = "";
        
        int len = value.length();
        for(int i = 0 ; i<len ;i++) {
            //indexOf 는 가장 앞에 존재하는 문자를 반환한다.
            //charAt 은 특정 위치 char를 반환한다. 
            //따라서 아래 조건문은 첫 번째 존재하는 문자와 인덱스 위치만 참이된다.
            if(value.indexOf( value.charAt(i)) == i )  {
                answer += value.charAt(i);
            }
        }
        System.out.println(answer);
        
        Character[] array = value.chars()
                                 .distinct()
                                 .mapToObj(num->((char)num))
                                 .toArray(Character[]::new);
        System.out.println(Arrays.toString(array));
        
    }
}

결과

123ㅁㄴㅇ45
[1, 2, 3, ㅁ, ㄴ, ㅇ, 4, 5]

중복 문자 제거는 indexOf 메서드 동작방식에 의존한다.

indexOf()는 주어진 문자에 해당하는 가장 첫 번째 위치 인덱스를 리턴한다.

즉, 대상이 첫 번째 위치로 특정되어 있다. 

이를 활용해 반환된 인덱스와 배열을 순회하는 인덱스가 같으면 중복을 제거할 수 있다.

 

 

'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글

교집합  (0) 2022.11.20
두배열합치기  (0) 2022.11.17
격자판 최대합  (0) 2022.11.12
숫자뒤집기  (0) 2022.11.10
봉우리  (0) 2022.11.09

+ Recent posts