JAVA

프로그래머스 외톨이 알파벳

Son 2022. 12. 21. 12:55

https://campus.programmers.co.kr/courses/15436/lessons/132843

 

프로그래머스

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

programmers.co.kr

import java.util.*;
class Solution {
    public String solution(String input_string) {
        String answer = "";
        
        //외톨이 판별 맵
        Map<Character,Boolean> map = new HashMap<>();
        
        //중복 판별
        Set<Character> set = new TreeSet<>();
        
        char[] carr= input_string.toCharArray();
        
        char current=' ';
        
        for(char temp:carr){       //하나씩 꺼내서              
             if(current!=temp){   //이전의 알파벳과 꺼낸 알파펫이 같지 않으면
                 if(map.containsKey(temp)){  //해당 map의 key 값으로 꺼낸 알파벳 값이 있다면
                     set.add(temp);  //외톨이 알파벳이라는 뜻이므로 set에 넣어줌
                 }               
                map.put(temp,true);  //key값으로 없는 경우 새로운 key value값을 만들어줌
                current=temp;  //꺼낸 알파벳을 current값으로 넣어주고 다음 index 알파벳과 비교
             }
        }
         
        for(char temp :set){  //set을 꺼내서
            answer+=temp;  //answer에 넣음
        }
        
        if(answer==""){  //외톨이 알파벳이 없는 경우
            return "N";  //n 출력
        }
        
        return answer;
   }
}

같은 알파벳이 연속해서 나오면 안되므로 이전의 알파벳과 비교를 하면서 이전의 알파벳과 같지 않은경우와 같지 않다면 해당 알파벳을 key값으로 만들어 map에 저장한다 그리고 key값에 알파벳이 들어있는 상태에서 또 알파벳이 들어오는 경우를 체크하고 (containsKey 메소드) 중복되지않게 set에 넣고  마지막에 set에 들어있는 값을 answer에 넣고 출력한다