기초코딩테스트 - 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개의 댓글

관련 채용 정보