[프로그래머스] Level0.한 번만 등장한 문자

Benjamin·2023년 2월 6일

프로그래머스

목록 보기
12/67

내 풀이

import java.util.Arrays;
import java.util.List;
import java.util.Collections;
import java.util.stream.Collectors;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] alpha = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        List<String> list = Arrays.stream(s.split("")).collect(Collectors.toList());
        for(int i=0; i<26;i++) {
            if(Collections.frequency(list,alpha[i])==1) answer += alpha[i];
        }
        return answer;
    }
}

내가 알파벳배열만든게 너무 길다고 생각했는데, 다른풀이를 구경하다가 괜찮은 풀이가 보여서 가져왔다.

다른 풀이

class Solution {
    public String solution(String s) {
        int[] alpha = new int[26];
        for(char c : s.toCharArray()){
            alpha[c - 'a']++;
        }

        StringBuilder answer = new StringBuilder();
        for(int i = 0; i < 26; i++){
            if(alpha[i] == 1){
                answer.append((char)(i + 'a'));
            }
        }
        return answer.toString();
    }
}

숫자 배열의 인덱스별로 알파벳이라 생각하고, 해당 알파벳이 나올때마다 해당 인덱스의 값을 +1해주는 방식을 사용했다.

0개의 댓글