-
[Java] 알고리즘 - 중복된 문자 제거Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 5. 17. 23:26반응형
중복 문자제거
설명
소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.
중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.
입력
첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.
출력
첫 줄에 중복문자가 제거된 문자열을 출력합니다.
Ex) ksekkset ===> kset
package chap1; import java.util.Scanner; public class Ex02_solution { public String ex2_solution(String str){ String answer=""; for(int i=0; i<str.length(); i++){ System.out.println(str.charAt(i) + " " +i+ " " + str.indexOf(str.charAt(i))); if(str.indexOf(str.charAt(i)) == i){ answer +=str.charAt(i); } } return answer; } public static void main(String[] args) { Ex02_solution T = new Ex02_solution(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex2_solution(str)); } }
우선 입력받은 코드를 작성해보자
Ex02_solution T = new Ex02_solution(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.ex2_solution(str));
그런 후에 입력받은 문자열을 검토해보
public String ex2_solution(String str){ String answer=""; for(int i=0; i<str.length(); i++){ System.out.println(str.charAt(i) + " " +i+ " " + str.indexOf(str.charAt(i))); } return answer; }
ksekkset를 입력한다면
========실행결과=========
k 0 0
s 1 1
e 2 2
k 3 0
k 4 0
s 5 1
e 6 2
t 7 7이와같은 println이 출력된다.
k s e k k s e t 입력받은 문자열을 for문을 돌아 값을 출력한다.
indexOf() , indexOf("찾을 특정 문자", "시작할 위치")
- 특정 문자나 문자열이 앞에서 부터 처음 발견되는 인덱스를 반환, 찾지 못하는 경우에는 "-1"을 반환
indexOf를 통하여 값을 출력해본다면
k의 경우 i=0번째 일때 0번재 순서에 들어있고
두번째 k의 경우 i=3이고 k는 0번째에 들어있다는 것을 확인할 수 있다.
즉 for문을 돌면서 i의 값과 해당 문자열이 위치한 값이 동일하다면 중복이 없다는 의미이다.
public String ex2_solution(String str){ String answer=""; for(int i=0; i<str.length(); i++){ System.out.println(str.charAt(i) + " " +i+ " " + str.indexOf(str.charAt(i))); if(str.indexOf(str.charAt(i)) == i){ answer +=str.charAt(i); } } return answer; }
이와같이 for문을 돌면서 if()조건을 넣어준다면 중복된 문자를 제거할 수 있다.
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 암호 해독하기 (0) 2023.08.09 [JAVA] 알고리즘 문제 문자열 압축 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 유효한 팰린드롬 (1) 2023.05.30 [JAVA] 알고리즘 문제 - 회문 문자열 (0) 2023.05.30 [Java] 알고리즘 문제 - 특정 문자 뒤집기 (0) 2023.05.17