작성
·
231
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점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.