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문의 인덱스와 동일할 때
중복 문자가 아니라는 점을 이용하여 문제를 풀 수 있습니다.
반응형