본문 바로가기

Algorithm/String

(C++) - LeetCode (easy) 1002. Find Common Characters

반응형

https://leetcode.com/problems/find-common-characters/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문자열 다루는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. alphabat별 전체 words의 최소 빈도를 저장할 vector minFreq를 선언 후 각 값을 INT_MAX로 초기화해줍니다.

2. 정답 변수 ans를 선언합니다.

📔 풀이과정

1. words를 순회하며 한 단어마다 alphabat별 빈도 수를 저장한뒤 minFreq과 비교해 각 alphabat별 최솟값을 minFreq에 저장합니다. 이렇게 하면 공통으로 존재하는 문자들의 빈도수가 저장되게 됩니다.

2. minFreq에 저장된 값만큼 alphabat을 ans에 push_back해줍니다.

📔 정답 출력 | 반환

ans를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    vector<string> commonChars(vector<string>& words) {
        vector <int> minFreq(26, INT_MAX);
        vector <string> ans;

        for(auto w : words) {
            vector <int> freq(26,0);
            for(auto c : w) freq[c - 'a']++;
            for(int i = 0; i < 26; i++) minFreq[i] = min(minFreq[i], freq[i]);
        }

        for(int i = 0; i < 26; i++) {
            for(int j = 0; j < minFreq[i]; j++)
                ans.push_back(string(1, i + 'a'));
        }
        
        return ans;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.