[프로그래머스][C++] 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)
댓글남기기