본문 바로가기
Computer Science/Algorithm

[Inflearn] 중복 문자 제거

by 코딩맛 2022. 11. 2.

인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.

 

섹션1. String(문자열)의 6. 중복 문자 제거 강의편 입니다.

 

설명

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

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

 

입력

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

 

출력

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

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 중복_문자_제거 {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		solution(str);
	}
	
	public static void solution(String str){
		String ans = "";
		for(int i=0; i<str.length(); i++) {
			if(str.indexOf(str.charAt(i))==i) {
				ans += str.charAt(i);
			}
		}
		System.out.println(ans);
	}
}

>>해설

문자열을 버퍼를 이용하여 입력 받아서 solution() 메서드에 매개변수로 넘깁니다.

이 문제의 키포인트는 중복된 문자를 제거하는 것 인데 indexOf() 함수를 이용하여 해결하고자 합니다.

 

문자열.indexOf(문자) 하면 문자열에서 문자가 발견된 첫 인덱스를 반환합니다. 

그래서 문자열 속 문자의 인덱스 번호와 indexOf()를 통해 얻어낸 인덱스 번호가 동일하면 중복되지 않은 문자열 입니다.

반면에 인덱스 번호가 동일하지 않을 경우엔 중복된 문자열 입니다.

 

따라서 indexOf()로 얻어낸 인덱스 번호화 문자열의 인덱스 번호가 같을 경우에만 ans 문자열 변수에 해당 문자열을 추가시킵니다.

최종적으로 ans 를 출력해보면 중복이 제거된 문자열을 확인할 수 있습니다.

'Computer Science > Algorithm' 카테고리의 다른 글

[Inflearn] 팰린드롬  (0) 2022.11.05
[Inflearn] 회문 문자열  (0) 2022.11.04
[Inflearn] 특정 문자 뒤집기  (0) 2022.10.30
[Inflearn] 단어 뒤집기  (0) 2022.10.30
[Inflearn] 문장 속 단어  (0) 2022.10.28