강의

멘토링

로드맵

Inflearn brand logo image

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

제영호님의 프로필 이미지
제영호

작성한 질문수

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

2-Q

2Q 질문 있습니다!

해결된 질문

작성

·

43

0

안녕하세요 큰돌님!

2Q 를 풀다가 반례를 못찾겠어서 질문드립니다!

https://www.acmicpc.net/source/90805248

제가 제출한 코드인데, 큰돌님의 풀이보다 복잡하고 비효율적인 것은 알지만 이 풀이가 왜 틀렸는지 알고싶어서 여쭤봅니다.

 

답변 2

0

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

안녕하세요 영호님 ㅎㅎ

몇가지 의아한 부분들이 있는데요. 그부분들 때문에 틀리지 않았나 싶습니다.

 

 

1.visited는 여기에 걸어야 하는게 아닐까요?

    while(!check_last()){                   // !check_last() 를 통해 0으로만 이루어진 인풋인 경우 0 0 출력
        cnt1++;                             // cnt1 -> 치즈가 녹는데 걸리는 시간
        memset(visited, 0, sizeof(visited));

 

  1. flag 변수는 필요하지 않은 것 같습니다.

 

  1. 그리고 cnt2 부분은 이렇게 되어야 하는게 아닐까요?

        if (check_last()) {
            int meltedCheeseCount = 0;
            for (int i = 0; i < N; i++){
                for (int j = 0; j < M; j++){
                    if (Map[i][j] == -1)
                        meltedCheeseCount++;
                }
            }
            cnt2 = meltedCheeseCount;
            break;
        }
  1. 그리고 끝점에 대해 체크하는 로직이 있는데 이 문제의 경우 아래 <그림 1>과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(<그림 1>에서 네모 칸에 X친 부분)에는 치즈가 놓여 있지 않으며 치즈에는 하나 이상의 구멍이 있을 수 있다. 이렇게 되어있기 때문에 끝점은 체크하지 않아도 됩니다.

     

이런 부분들을 한번 고쳐보시겠어요?

 

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

안녕하세요, 인프런 AI 인턴입니다. 제영호님께서 주신 질문에 대한 답변을 드리겠습니다.

제영호님께서 언급하신 문제에서 반례를 찾기 어렵다고 하셨는데, 이런 경우 보통 예외적인 입력이나 극한 조건에서 문제가 발생하는 경우가 많습니다. 테스트 케이스를 더 다양한 방법으로 생성하고, 입력의 각 부분이 코드의 의도대로 처리되고 있는지를 세부적으로 검토하는 것이 좋습니다.

아래 링크에서 유사한 문제와 그에 대한 설명을 찾아보실 수 있습니다:

  • 1-J 반례: 이 게시물에서는 코드에서 반례를 찾는 방법과 설명이 포함되어 있습니다. 이를 통해 다양한 입력 케이스를 분석하는 방식을 참고하실 수 있습니다.

반례를 찾기 위해 다음과 같은 방법을 추가적으로 시도해 보시는 것도 좋습니다:

  • 극단적인 입력값: 가능한 한 큰 값이나 작은 값을 입력하여 테스트합니다.
  • 특정 규칙: 연속적이거나 패턴이 있는 입력값을 사용하여, 함수가 기대한 대로 작동하는지 확인합니다.
  • 모든 요소 동일: 배열의 모든 요소가 동일한 경우와 같이 특수한 케이스를 고려합니다.

이러한 방법으로 문제의 특정 부분에서 오류가 발생할 수 있는지 검토해 보시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

제영호님의 프로필 이미지
제영호

작성한 질문수

질문하기