인프런 커뮤니티 질문&답변

백승민님의 프로필 이미지
백승민

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-K

2-k 교수가 된 현우

해결된 질문

작성

·

536

0

선생님 안녕하세요

2-k 강의를 듣기 전 먼저 풀어보았는데 컴파일 에러가 나옵니다.

어느 부분이 잘못되었는지 몰라서 질문 드립니다.

http://boj.kr/bfdfa1d3fcad42daae13f2d7e13b973c

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 승민님 ㅎㅎ

cnt[1000000001];

배열의 크기를 너무 크게 잡으셔서 에러가 나는 겁니다. 보통 10억짜리는 잘 안됩니다.

해당 부분 줄여서 테스팅 해보시겠어요? 이런식으로 말이죠.

(컴파일은 잘 됩니다.)

#include<bits/stdc++.h>
using namespace std;

int t, n, i, two, five, temp, cnt[100001];

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    cin >> t;

    for(i = 1; i <= 1000000001; i++)
    {
        temp = i;
        while(temp % 2 == 0){
            temp /= 2;
            two++;
        }
        while(temp % 5 == 0){
            temp /= 5;
            five++;
        }
        cnt[i] += min(two, five);
    }

    while(t--){
        cin >> n;
        cout << cnt[n] << '\n';
    }
}

컴파일 에러가 나는데 어떤 에러인지 모를 때는 너무 많은 배열을 잡아서 그럴 때가 종종 있습니다.

 

감사합니다.

백승민님의 프로필 이미지
백승민

작성한 질문수

질문하기