코딩테스트/기초

6. 중복문자제거

누리는 귀여워 2024. 12. 2. 22:49

import java.util.*;

class Main {
    public String solution(String str) {
        String answer = "";
        for(int i = 0; i < str.length(); i++) {
        	// str에서 현재 인덱스 i에 해당하는 문자를 가져옴
            // 가져온 문자의 첫번째 위치를 찾는다
            if(str.indexOf(str.charAt(i)) == i) {
                answer += str.charAt(i);
            }
        }
        return answer;
    }

    public static void main(String []args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(T.solution(str));
    }
}

 

문자열이 "banana"일 때:
i = 0: str.charAt(0)은 'b'이고, indexOf('b')는 0. (같으므로 'b'를 answer에 추가)
i = 1: str.charAt(1)은 'a'이고, indexOf('a')는 1. (같으므로 'a'를 answer에 추가)
i = 2: str.charAt(2)는 'n'이고, indexOf('n')는 2. (같으므로 'n'을 answer에 추가)
i = 3: str.charAt(3)은 'a'이고, indexOf('a')는 1. (다르므로 'a'는 추가하지 않음)
i = 4: str.charAt(4)은 'n'이고, indexOf('n')는 2. (다르므로 'n'은 추가하지 않음)
i = 5: str.charAt(5)은 'a'이고, indexOf('a')는 1. (다르므로 'a'는 추가하지 않음)
결과적으로 answer에는 "ban"이 저장됨.

indexOf는 해당되는 문자가 문자열에 여러개 있을 때 가장 앞에 위치한 문자를 반환

 

 

import java.util.*;

class Main {
    public String solution(String str) {
        String answer = "";
        for(int i = 0; i < str.length(); i++) {
            if(str.indexOf(str.charAt(i)) == i) {
                answer += str.charAt(i);
            }
        }
        return answer;
    }

    public static void main(String []args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        System.out.println(T.solution(str));
    }
}