[문제풀이] 01-06. 중복 문자 제거

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 24일
0

인프런, 자바(Java) 알고리즘 문제풀이

String(문자열) 다루기 - 0106. 중복 문자 제거


🗒️ 문제


🎈 나의 풀이

	public static String solution(String str) {
        String answer = "";
        char[] chars = str.toCharArray();

        for(int i=0; i<chars.length-1; i++) {
            if (Character.isLowerCase(chars[i])) {
                for (int j = i + 1; j < chars.length; j++) {
                    if(chars[i] == chars[j]) {
                        chars[j] = Character.toUpperCase(chars[j]);
                    }
                }
            }
        }

        for(char c : chars) {
            if(Character.isLowerCase(c)) {
                answer += c;
            }
        }

        return  answer;
    }

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


🖍️ 강의 풀이

    public static String solution(String str) {
        String answer = "";
        char[] chars = str.toCharArray();
        for(int i=0; i<chars.length; i++) {
            if(i == str.indexOf(chars[i])) answer += chars[i];
        }

        return answer;
    }

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


💬 짚어가기

나의 풀이의 경우 두 단계를 거친다.

  • 1단계 : 중복 문자 찾기
    처음 등장하는 문자는 소문자로, 중복 문자는 대문자로 구분하여
    문자열의 문자를 하나씩 비교하며 중복 문자를 찾는다.

  • 2단계 : 중복 문자 제거
    소문자인 경우만 저장하여 중복 문자를 제거한다.


강의에서는 String 클래스의 indexOf() 메소드를 활용했다.
해당 메소드는 특정 문자가 문자열에서 처음 등장하는 index를 반환한다.
따라서 현재 문자의 위치와 반환된 index를 비교하여 중복 여부를 판별한다.

강의 방식이 코드도 간결하고 메소드의 기능을 잘 활용한 방식인 것 같다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글