해결된 질문
작성
·
119
0
안녕하세요 큰돌선생님! 늘 제가 먼저 해보고 선생님 코드를 보는데, 제 코드랑 달리 선생님 코드는 너무 깔끔해서 항상 감동합니다.. 늘 감사합니다
다름이 아니라,
http://boj.kr/3f2dfd5dd72a45e69326ea4b3d0e2216
저는 이 문제에서 마지막 벽 하나 없애는 부분을 비트마스킹으로 경우의 수를 만들어서 싹 돌려줬는데요..
5중 for문..ㅋㅋ으로 시간초과 뜰줄 알았으나 다행히(?) 맞았습니다가 뜨긴했는데 불안해서요.. 이런식으로 짜는 건 많이 비추하시나요?ㅠㅠ 실제 코테였다면 이렇게 하는게 위험한 방법인지 궁금해서 한 번 질문드려요!!
좋은 하루 보내세요!!
답변 1
0
안녕하세요 밍링님 ㅎㅎ
for(int i=0; i<M; i++){
for(int j=0; j<N; j++){
for(int k=0; k<4; k++){
memset(visited, 0, sizeof(visited));
int tmp = arr[i][j];
arr[i][j] &= ~(1<<k);
for(int a=0; a<M; a++){
for(int b=0; b<N; b++){
벽을 하나 없애고 -> 다시 원복 하면서 탐색한다를 잘 하신 것 같습니다. i, j, k, a, b, 이렇게 변수를 실수 없이 하신점도 좋습니다.
괜찮은 코드라고 생각합니다. 조금은 투박하지만 실수만 안한다면 괜찮습니다. 그러나 제 해설코드처럼 roomSize로 캐싱걸어서 하는 것도 공부하셔야 해요 ㅎㅎ
실제 코테였다면 이렇게 하는게 위험한 방법인지 궁금해서 한 번 질문드려요!!
>> 위험하지는 않습니다. 코테를 풀 때 중요한 점은 실수 없이 맞추는 것입니다. 그 때 무슨 엄청난 효율을 자랑하는 코드를 한번에 작성할거라고는 생각하지 말아야 합니다. 일단은 맞추고 -> 시간남으면 효율적으로 수정하는 식으로 가야합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
오오 감사합니다 선생님! 오늘 roomSize 캐싱도 다시 제대로 공부하겠습니다!