qocn9029   4년 전

h w n 을 

2 10 10 이렇게 입력 했을때는 맞는 답:205 가 나오는데

2 11 11 이렇게 입력 했을때는  106이 나와야 하는데 0이 나오는 이유를 모르겠습니다.

왜 2 11 11 은 

if(cnt==n){ 
 finalW=a;
 finalH=b;
 break;
} 이 부분을 거치지 않는것인가요?

seecimi   4년 전

2 11 11뿐만 아니라, 2 13 13, 2 15 15 등 홀수에서는 모두 0이 출력되는것을 볼 수 있습니다.

이유는 29번의 cnt++ 때문입니다.

23~27줄에서 cnt != n 이기때문에, break조건을 만족하지 못했을때 cnt는 1이 더해지게 됩니다.

그순간 21번째 줄의 for구문이 끝나면 cnt는 32번째 줄을 거치게 될꺼고, break 조건이 만족되어 0이 출력되게 됩니다.

해결방안으로는, boolean변수를 이용하는 방법이 좋을것 같네요.

23~27줄을 만족한다면, boolean 상태를 true로 바꾸고, boolean의 상태를 32번째 줄에서 검사한다던지 하면 좋을듯합니다.

// 101호가 정상적으로 출력되는지 확인하시면 좋을듯 하네요 ^^~

댓글을 작성하려면 로그인해야 합니다.