인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

제영호님의 프로필 이미지

작성한 질문수

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

2-Q

2Q 질문 있습니다!

해결된 질문

작성

·

33

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 인턴님의 프로필 이미지

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

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

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

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

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

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

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

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