14500번 - 테트로미노
14500번 문제를 dfs를 이용하여 푸는 중입니다.
ㅗ 모양을 제외한 4가지 모양만 dfs가지고 최대값을 구하는 코드를 짰는데요.
cnt 에 1을 더해주는 과정의 위치에 따라 출력 값이 다르게 나오는데 도통 왜 그런지 이해가 되지 않습니다. 예를 들면
출력예제 1번을 넣으면
1. 이 코드는 출력값으로 잘못된 값인 16이 나옵니다.
if(!visit[curRow][curCol]) {
visit[curRow][curCol] = true; cnt += 1;
solved(curRow, curCol, sum + board[curRow][curCol], cnt);
visit[curRow][curCol] = false;
}2. 이 코드는 출력값으로 정상 출력되어 19가 나옵니다.
visit[curRow][curCol] = true;
solved(curRow, curCol, sum + board[curRow][curCol], cnt + 1);
}
cnt에 1을 더해주고 그 1을 더해진 cnt를 인자값으로 넘겨 주거나
cnt에 1을 더해서 인자값으로 넘겨주거나
말은 같은데 왜 출력값이 다르게 나올까요?
59번째 줄 for문을 돌 때 cnt의 값은 일정해야 합니다.예를들어 i가 1일 때, cnt += 1을 해버리면 i가 2일 때 cnt의 값은 1 증가된 상태로 처리되기 때문에 올바르지 않은 것 같습니다.
이해했습니다 ! 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
chlwlsgur000 1년 전
14500번 문제를 dfs를 이용하여 푸는 중입니다.
ㅗ 모양을 제외한 4가지 모양만 dfs가지고 최대값을 구하는 코드를 짰는데요.
cnt 에 1을 더해주는 과정의 위치에 따라 출력 값이 다르게 나오는데 도통 왜 그런지 이해가 되지 않습니다.
예를 들면
출력예제 1번을 넣으면
1. 이 코드는 출력값으로 잘못된 값인 16이 나옵니다.
if(!visit[curRow][curCol]) {
visit[curRow][curCol] = true;
cnt += 1;
solved(curRow, curCol, sum + board[curRow][curCol], cnt);
visit[curRow][curCol] = false;
}
2. 이 코드는 출력값으로 정상 출력되어 19가 나옵니다.
if(!visit[curRow][curCol]) {
visit[curRow][curCol] = true;
solved(curRow, curCol, sum + board[curRow][curCol], cnt + 1);
visit[curRow][curCol] = false;
}
cnt에 1을 더해주고 그 1을 더해진 cnt를 인자값으로 넘겨 주거나
cnt에 1을 더해서 인자값으로 넘겨주거나
말은 같은데 왜 출력값이 다르게 나올까요?