7의 개수

문제 링크

7의 개수

분석

정수 배열 array에서 모든 요소들에 숫자 7이 몇 개 있는지 반환하는 문제입니다.

모든 요소들을 확인해야하므로, 반복문으로 순회해야합니다.

풀이

#include <vector>

using namespace std;

int solution(vector<int> array) {
    int answer = 0;
    
    // 각 요소를 순회하는 반복문
    for (int e : array)
    {
        // 현재 요소가 0보다 클 경우 반복한다
        while (e > 0)
        {
            // 1의 자리수를 구한다.
            int curNumber = e % 10;

            // 1의 자리수가 7일 경우 개수 증가
            if (curNumber == 7)
            {
                ++answer;
            }
            
            // 1의 자리수를 제거하고, 다음 자리수로 이동
            e /= 10;
        }
    }
    
    return answer;
}

array의 요소를 순회하며, 각 요소를 10으로 나눈 나머지를 통해 1의 자리수를 확인합니다.
1의 자리수가 7이면 개수를 증가하고, 10으로 나누어 1의 자리수를 제거한 뒤 다시 반복해 10의 자리, 100의 자리 등 모든 자리수를 확인합니다.

성능 요약

시간 복잡도는 $O(n \times log m)$

  • 각 요소를 순회하는 반복문 $O(n)$
  • 각 요소의 자리수 개수만큼 반복하는 반복문 $O(log m)$
    • 최대 횟수는 int의 최대 자리수와 같기 때문
  • $O(n) \times O(log m)$

공간 복잡도는 추가적인 공간을 사용하지 않기 때문에 $O(1)$입니다.

테스트 성능

테스트 1 〉 통과 (0.01ms, 4.46MB)
테스트 2 〉 통과 (0.01ms, 4.15MB)
테스트 3 〉 통과 (0.01ms, 4.23MB)
테스트 4 〉 통과 (0.01ms, 4.14MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기