본문 바로가기
알고리즘 문제풀이

[알고리즘/인프런]1-6 중복문자 제거(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 5. 5.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.

내 풀이

  • 소문자 알파벳의 아스키 코드값과 알파벳의 중복을 체크할 boolean 배열을 만들어 풀이
import java.io.*;

public class Main {

    //a~z 아스키코드 -> 97~122
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        char[] chars = s.toCharArray();
        boolean[] check = new boolean[26]; //알파벳의 중복을 체크, true이면 중복되는 알파벳

        for (char c : chars) {
            if (!check[c-97]) { //중복된 알파벳이 아니라면
                check[c-97] = true;
                sb.append(c);
            }
        }

        return sb.toString();
    }

    public static void main(String[] args) throws IOException {
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        System.out.println(T.solution(s));
    }
}

강의 풀이

  • String의 indexOf 메서드 활용하여 간결한 풀이
  • indexOf는 지정한 문자가 처음 발견되는 위치를 반환하기 때문에 현재 인덱스와 indexOf에서 반환한 인덱스가 일치하지 않으면 중복되는 문자
import java.util.*;

class Main {    
    public String solution(String str){
        String answer="";
        for(int i=0; i<str.length(); 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));
    }
}

댓글