컴굥일지

[Programmers/프로그래머스][C++] 외톨이 알파벳 (PCCP 모의고사 1회 1번) 본문

알고리즘/코테 문제

[Programmers/프로그래머스][C++] 외톨이 알파벳 (PCCP 모의고사 1회 1번)

gyong 2023. 8. 19. 17:53
반응형

문제

https://school.programmers.co.kr/learn/courses/15008/lessons/121683?language=cpp 

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

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

 

문제 내용

소문자로만 이루어진 문자열에서, 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 "외톨이 알파벳"이라고 부른다.

입력받은 문자열에 대해, 외톨이 알파벳을 모두 구하여 사전순으로 출력하면 된다.

 

문제 풀이

문자열을 잘 처리해 주면 되는 문제이다.

 

코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string input_string) {
    vector<int> position(26,-1); //-1로 초기화
    vector<bool> alone(26,false);
    
    bool flag =false;
    
    for(int i=0;i<input_string.size();i++){
        char ch=input_string[i];
        
        if(position[ch-'a'] == -1 || position[ch-'a'] == i-1 ){ //새로 있거나 연결 된 경우
            position[ch-'a'] = i;
        }else{
            alone[ch-'a']=true;
            position[ch-'a'] = i;
            flag=true;
        }
    }
    
    if(!flag) return "N";

    string answer = "";
    for(int i=0;i<26;i++){
        if(alone[i]) answer+=('a'+i);
    }
    return answer;   
    
}

 

반응형
Comments