기초코딩테스트 - String 중복문자제거

고장난 고양이·2022년 3월 27일
0

codingtest-java

목록 보기
9/21

문제

설명

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

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

입력

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

출력

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

예시 입력 1

ksekkset

예시 출력 1

kset

코드

import java.util.*;
  
public class Main {
  public String solution(String str){
        char[] charArr=str.toCharArray();
        ArrayList<Character> charArr2 = new ArrayList<>();
        for(char x : charArr){
            if(!charArr2.contains(x)){
                charArr2.add(x);
            }
        }
        String answer="";
        for(char x : charArr2){
            answer+=x;
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner sc= new Scanner(System.in);
        String str = sc.next();
        System.out.println(T.solution(str));
      	return;
    }
}

문자열을 char 배열로 바꾸고 for문을 통해 arraylist로 이동 이미 한번넣은것은 넣지않으며 중복을 제거해나간다.
후에 다시 answer에 차례대로 넣으며 가공된 문자열로 변형시켜준다.

참고 코드

import java.util.*;
class Main {	
	public String 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){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.print(T.solution(str));
	}
}
  • str.charAt(i) : String에서 i 번째 char return
  • str.indexOf(char) : char의 위치를 반환해준다.
    -> 이를 이용해서 중복된경우 앞에있는 index값을 반환해주기때문에 맨처음 중복된 문자 뒤로 오는 중복된 문자들은 조건에 해당되지않아서 중복제거가 완료된다.

여러번 왔다갔다하는 나의 코드보다 훨씬 깔끔하고 메모리차지도 덜할듯 싶다.

profile
개발새발X발일지

0개의 댓글