[C++] 4779번 : 칸토어 집합

wldud·2025년 1월 14일
0

알고리즘

목록 보기
33/34

테스트는 잘 되는데 계속 내면 출력초과가 떴다. 그래서 보니까 파일 끝에서 멈춰줘야 해서

while(!cin.eof())

로 while문의 조건을 바꿔줬는데도 계속 틀렸다고 떴다. 계속 질문게시판을 찾아보면서 나와 비슷한 오류인 사람들을 참고했는데 밑에처럼 바꾸니까 되었다.

#include <iostream>
#include <cmath>

using namespace std;

void Cantor(char array[], int start, int end ){
  if(start != end){
    int k = (end - start +1)/3;

    for(int i = start + k;i < start + 2*k; i++){
      array[i] = ' ';
    }

    Cantor(array, start, start + k - 1 );
    Cantor(array, start + 2*k, end);
  }
}

int main(void){

ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

  int num;
  while(cin>>num){
    
    int N = pow(3,num);
    char array[N];

    for(int i=0;i<N;i++){
      array[i] = '-';
    }

    Cantor(array, 0, N-1);

    for(int i=0;i<N;i++){
      cout<<array[i];
    }
    cout<<'\n';
  }
}

https://www.acmicpc.net/board/view/120317

위의 글을 읽어보고 고쳤다......

0개의 댓글