알고리즘/프로그래머스

[PCCP 모의고사 #1] 1번 - 외톨이 알파벳

베리영young 2024. 12. 2. 03:03

아 징ㅈ짜!!!

반례 조심

"aaabbb"는 "N"이 나와야 함.

 

import java.util.*;

class Solution {
    //List<String> ans = new ArrayList<>();
    int[] cntAlphas = new int[26];
    
    public String solution(String input_string) {
        int len = input_string.length();
        for(int i=0; i<len; i++) {
            char cur = input_string.charAt(i);
            cntAlphas[cur - 'a']++;
            
            //end처리를 안 하면... b가 3번으로 카운트 됨
            boolean end = false;
            //
            for(int j=i+1; j<len; j++) {
                //추가코드
                if(j==len-1 && cur == input_string.charAt(j))
                    end = true;
                //
                if(cur != input_string.charAt(j)) {
                    i = j-1;
                    break;
                }
            }
            //추가코드
            if(end)
                break;
            //
        }
        //
        String answer = "";
        for(int i=0; i<26; i++) {
            if(cntAlphas[i] > 1)
                answer += (char) (i + 'a');
        }
        //System.out.println(cntAlphas[3]);
        
        if(answer.equals("")) 
            answer = "N";
        return answer;
    }
}

 

 

다른 방법으로 풀어보았다

import java.util.*;

class Solution {
    List<Character> list = new ArrayList<>();
    
    public String solution(String input_string) {
        for(int i=0; i<input_string.length() - 1; i++) {
            if(list.contains(input_string.charAt(i))) continue;
            
            boolean same = false;
            if(input_string.charAt(i) == input_string.charAt(i+1)) 
                same = true;
            
            for(int j=i+2; j<input_string.length(); j++) {
                if(!same){
                    if(input_string.charAt(i) == input_string.charAt(j)) {
                        list.add(input_string.charAt(i));
                        break;
                    }
                } else {
                    if(input_string.charAt(i) != input_string.charAt(j)) {
                        same = false;
                    }
                }
                
                
            }
        }
        
        Collections.sort(list);
        StringBuilder sb = new StringBuilder();
        for(char l : list) {
            sb.append(l);
        }
        if(list.size() ==0) sb.append("N");
        return sb.toString();
    }
}