Lv 0. 7의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120912

 

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array) {
    int answer = 0;
    for(auto c: array){
        int t=0;
        while(c>0){
            t=c%10;
            if(t==7) answer++;
            c/=10;
        }
    }
    return answer;
}

위의 코드처럼, 각각의 array의 원소들을 1의 자리를 파싱하면서 해당 값들에 대해서 7인지 판별하고, 7이면 answer++; 을 해주는 형태로 코드를 작성하였다. 

 

다른 사람의 풀이를 보니, 해당 수들을 하나의 수마다 to_string() 함수를 사용해줘서 스트링으로 변형하고, 해당 스트링의 개별 char로 이것이 '7'인지 판별하는 형태의 코드를 작성한 풀이도 있는데, 이 풀이 또한 괜찮은 풀이로 보여진다. 위와 같은 파싱형태를 취하지 않기 때문에 코드 자체는 조금 더 간결해질 수 있다. 

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array)
{
    int answer=0;
    for(int i : array)
    {
        string s=to_string(i);
        for(char c : s)
            if(c=='7') answer++;
    }
    return answer;
}

이 풀이가 직관적으로 이해하기에는 더 좋을것 같다. 

 

  Comments,     Trackbacks