본문 바로가기

알고리즘/인프런

섹션 1. String(문자열)_6. 중복문자제거

문제

  • 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.
  • 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.

입력

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

출력

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

입출력 예제

 


풀이 방식은 다음과 같다.

 

입력받을 문자열과 메소드 출력하는 코드를 main에 작성한 후에 메소드를 구현해보자.

 

문자열의 길이만큼 for문을 돌며 작업을 수행한다.

코드 작성 전에 charAt(i) / i / indexOf(str.charAt(i)) 를 각각 System.out.println(); 찍어서 값을 확인했다.

  • str.charAt(i) : 해당 문자
  • i  : 문자의 인덱스
  • indexOf(str.charAt(i)) : 해당 문자가 가장 처음 발견된 인덱스

그러고 나니 if 문 안에 넣을 조건을 알 수 있었다.

해당 문자가 가장 처음 발견된 인덱스와 문자의 인덱스가 같다면 그 문자는 처음 발견된 것이므로 결과값에 넣어준다.

예를 들어보자.

TEST 라는 단어가 있다.

  • str.charAt(i) : T / E / S / T
  • i  : 0 / 1 / 2 / 3
  • indexOf(str.charAt(i)) : 0 / 1 / 2 / 0

이 되기 때문에 메소드를 수행하면 TES 라는 값이 나오게 되는 것이다.

 

이제 수행 결과를 확인해보자.


해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.