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

dkswhdgur1209님의 프로필 이미지
dkswhdgur1209

작성한 질문수

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

3-P

3-P 디버깅 질문입니다

작성

·

230

0

이 문제를 처음 풀 때, 저는 씨를 심을 수 있는 공간을 3개를 뽑고, 각 공간마다 꽃이 필 수 있을 때만 ret값을 초기화 하는 형태로 짰었습니다.

http://boj.kr/95d7faf9296842c2b79fdd40a1c85a75

위의 링크에 있는 로직 중 48-49행의 로직이 틀려서 제출하면 '틀렸습니다'라고 뜹니다.

결국 코드 하나하나 뜯어봐서 48-49행의 로직이 틀렸다는 것을 지금은 알지만 디버깅을 통해서 '48-49행의 로직이 틀렸구나!' 라는걸 알고 싶어서 제 로직 중 어느 곳에 디버깅을 해야 48-49행이 틀렸는지 알고 싶습니다.

답변 1

1

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

안녕하세요 1209님 ㅎㅎ

그니까

원래의 코드를

				for(pair<int, int> it : seedList){
					if(!check(it.first, it.second)) continue;
				}
                bool flag = 0;
				for(pair<int, int> it : seedList){
					if(!check(it.first, it.second)) flag = 1;
				}
                if(flag) continue;

앞의 코드처럼 바꿔서 제출해야 맞는데

어떻게 디버깅을 해야 이걸 알 수 있을까? 라는 말씀이시죠?

이거는 문제 지문과 자신의 코드를 비교해 보면서 디버깅 하셔야 합니다. 혹시라도 "착각한" 문제지문이 없나 보면서 하시면 됩니다.

 

자 이 문제는

하이테크 앞 화단의 대여 가격은 격자의 한 점마다 다르기 때문에 진아는 서로 다른 세 씨앗을 모두 꽃이 피게하면서 가장 싼 가격에 화단을 대여하고 싶다.

단 화단을 대여할 때는 꽃잎이 핀 모양을 기준으로 대여를 해야하므로 꽃 하나당 5평의 땅을 대여해야만 한다.

이거를 구현해야 해요.

근데 1209님이 첨에 구축한 코드는 그저 안되면 꼭 설치 안하지~ 하는 식으로 해서 3개 이하로 꽃을 심는거죠? 근데 그걸 flag 변수를 기반으로 3개중 하나라도 안되면 ~~ 아예 설치 안하지~ 라는 식으로 코드를 구축해서 3개 무조건 설치하는 것으로 만들어야 하는 구나 라는 거를 깨달아야 합니다.

내 코드는 3개이하고

문제는 3개를 심으라고 하는구나.

아 그러면 로직차이가 있겠네?

그러면 로직을 3개 심을 때로 바꿔볼까? 하면서 말이죠. ㅎㅎ

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

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

감사합니다.

강사 큰돌 올림.

 

dkswhdgur1209님의 프로필 이미지
dkswhdgur1209

작성한 질문수

질문하기