강의

멘토링

로드맵

Inflearn brand logo image

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

준석님의 프로필 이미지
준석

작성한 질문수

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

2-Q

2-Q

작성

·

39

0

http://boj.kr/8dec3ec12c294bc6b22189db0403ed50
선생님 복습을 하다가

image.png

이렇게 cheese가 없으면 break해서 cnt의 그 전 값을 보존하는 방법은 어떨까 해서 질문 드립니다!

이렇게 하면 치즈가 다 녹았는지 다시 체크 안해도 될 것 같아서 더 효율적일 것 같아 질문 드립니다!

답변 2

1

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

안녕하세요 준석님 ㅎㅎ

와 너무 좋네요 ㅎㅎ

        bool flag = 0;
        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                if(a[i][j] != 0) flag = 1;
            }
        }

제 코드처럼 매번 확인하는 것보다

준석님처럼 size를 DFS에 걸어놓고 하는것이 더 효율적인 코드인 것 같습니다.

 

잘하셨습니다. ㅎㅎ

 

감사합니다.

준석님의 프로필 이미지
준석
질문자

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

준석님께서 치즈 문제를 해결하는 방법에 대해 질문 주셨군요. 공유해 주신 코드를 통하여 치즈가 다 녹았을 때 바로 루프를 탈출하여 이전 상태를 보존하는 방법을 사용하고 있는 점에 대해 관심을 가지셨습니다. 이는 일반적인 알고리즘의 성능을 개선할 수 있는 방법 중 하나입니다.

치즈 문제에서는 보통 DFS/BFS를 사용하여 치즈의 상태를 탐색하고 적절하게 녹이는 과정이 반복됩니다. 특정 조건에서 바로 루프를 탈출하는 방식은, 치즈가 모두 없어졌을 때 불필요한 계산을 방지할 수 있어 효율성을 높일 수 있는 좋은 아이디어입니다.

그러나 주의할 점도 있습니다:
1. 정확성 유지: 루프 탈출 조건이 제대로 설정되지 않으면, 특정 시점에 대해 계산이 덜 이루어질 수 있으며 이로 인해 정답이 틀리게 나올 수 있습니다.
2. 상태 변화 추적: cheese.size()의 상태가 정확하게 변경되고 있는지, 루프를 탈출한 후의 동작이 예상대로 수행되고 있는지 확인해야 합니다.

아래 비슷한 주제를 다룬 기존 질문과 답변을 참고하시기 바랍니다:
- 2636 치즈 질문드립니다
- 2-Q 치즈 질문입니다.

이들의 답변은 치즈 문제에서 발생할 수 있는 다양한 반례와 해결책을 탐색하는 데 참고할 수 있습니다.

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

준석님의 프로필 이미지
준석

작성한 질문수

질문하기