alsghdjrk   5년 전

테스트 케이스 갯수가 안나와있어서 임의로 잡았습니다.

dfs 를분하지않고 main함수에 넣어서 풀었습니다.

queue 는 클리어 함수가없어서 q = queue<int>(); 를 사용했습니다.

어디서 런타임 에러가 나오는지 모르겠습니다.

portableangel   5년 전

테스트 케이스 개수를 왜 임의로 잡으셨나요?

온라인 저지 환경(및 모든 대회 환경)에서는 각 테스트 케이스에 대해 입력과 출력을 구분할 필요가 없습니다.

다시 말해,

첫 케이스 입력

첫 케이스 출력

두번째 케이스 입력

두번째 케이스 출력

...

으로 프로그램이 수행되어도 아무 상관이 없습니다. 입력 스트림과 출력 스트림은 별개이고, 채점 프로그램은 출력 스트림만 확인하기 때문입니다.

portableangel   5년 전

테스트 케이스의 개수와 배열의 사이즈가 아무런 관계가 없도록 코드를 작성하셔야 한다는 의미입니다.

단적인 예로, 제가

2

1 2

가 101만 개 들어 있는 테스트 케이스를 추가하는 것만으로, 위 코드가 항상 런타임 에러가 나는 입력을 만들어 데이터를 추가할 수가 있습니다. (아마 이미 있을 수도 있습니다)

아래 알고리즘대로 작성해보세요.

0. 1000칸짜리 배열 선언

  1. N과 배열을 한 번만 입력받는다. (기존 배열에 덮어씌워서 입력을 받음)
  2. 문제를 풀고 출력한다.
  3. [1~2]를 T번 반복.

현재 코드의 흐름은 N과 배열을 T번 입력받고, 그 이후 T번 풀고 있는데, 이 방식은 다시 말씀드리지만 T가 101만인 입력 데이터를 추가하는 것만으로 런타임 에러를 만들 수가 있습니다. 만약 101만으로 바꾸시면? 102만으로, 102만으로 바꾸시면 103만으로 데이터를 추가하여 계속 런타임 에러를 낼 수도 있습니다. 이런 불상사가 현재 발생하고 있는 것일 수도 있고요.

alsghdjrk   5년 전

다른 문제를 풀면서 답글 작성자님께서 무슨 말씀을 하셨는지 알게되었습니다. 감사드립니다.

테스트 케이스의 갯수를 받으면 카운트를 줄여가면서  그 카운트를 줄이고 테스트 케이스를 입력받고 돌리고 출력하는 형식으로 고쳐보겠습니다.

댓글을 작성하려면 로그인해야 합니다.