본문으로 바로가기
728x90
반응형

▷ 문제

소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.

중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.

* 입력

첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.

* 출력

첫 줄에 중복문자가 제거된 문자열을 출력합니다.

▷ 입력 예시

ksekkset

▷ 출력 예시

kset

▷ 풀이

1. contains 이용

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public List<String> solution(String str){
        char[] cArr = str.toCharArray();
        List<String> answer = new ArrayList<String>();
        for (char x : cArr) {
            String tmp = String.valueOf(x);
            if(!answer.contains(tmp)){
                answer.add(tmp);
            }
        }
        return answer;
    }

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

        for (String x : main.solution(str)){
            System.out.print(x);
        }
    }
}

 

2. indexOf 이용

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public 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 main = new Main();
        Scanner kb = new Scanner(System.in);
        String str = kb.next();

        System.out.println(main.solution(str));
    }
}

▷ 핵심 포인트

1. indexOf는 특정 문자의 첫 번째 위치를 반환해주므로 for문의 인덱스와 동일할 때

   중복 문자가 아니라는 점을 이용하여 문제를 풀 수 있습니다.

반응형