Vienna

프로그래머스) 한 번만 등장한 문자 본문

알고리즘 문제 풀이

프로그래머스) 한 번만 등장한 문자

아는개발자 2023. 5. 24. 14:53

https://school.programmers.co.kr/learn/courses/30/lessons/120896?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

◇ 문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

◇ 제한사항

  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

◆ 풀이

지난 번에 이미 풀어본 문제다.

지난 번에는 이런 코드로 풀었다.

class Solution {
    public String solution(String s) {
        StringBuilder result = new StringBuilder();

        for(int i=0; i<26; i++){
            char digit = (char)(i+97);
            if(IsOnlyNum(s, digit)){
                result.append(digit);
            }
        }

        return result.toString();
    }

    private boolean IsOnlyNum(String str, char targetChar){
        int count=0;
        for (int i = 0, iMax = str.length(); i < iMax; i++) {
            if(str.charAt(i)==targetChar && ++count>1){
                return false;
            }
        }

        if(count>0)
            return true;
        else
            return false;
    }
}

다른 방식으로는 어떻게 풀어볼 수 있을까?

String의 indexof 함수를 이용하면 이렇게 풀 수 있을 것이다.

class Solution {
    public String solution(String s) {
        StringBuilder result = new StringBuilder();

        for(int i=0; i<26; i++){
            char digit = (char)(i+97);
            if(IsOnlyNum(s, digit)){
                result.append(digit);
            }
        }

        return result.toString();
    }

    private boolean IsOnlyNum(String str, char targetChar){
        int firstIndex = str.indexOf(targetChar);
        int lastIndex = str.lastIndexOf(targetChar);

        return firstIndex>=0 && firstIndex == lastIndex;
    }
}

지난 번보다 훨씬 줄일 수 있었다.

 

'알고리즘 문제 풀이' 카테고리의 다른 글

백준5613번) 계산기 프로그램  (0) 2023.05.24
프로그래머스) 배열 회전시키기  (0) 2023.05.24
백준10807번) 개수 세기  (1) 2023.05.16
백준2830번) 행성 X3  (0) 2023.05.16
백준9012번) 괄호  (0) 2023.05.16
Comments