어떤 문제에서 필요할까요???
혹시 k번째 수 찾기 문제 말씀하시는 건가요?
어떤 문제에서 필요할까요???
혹시 k번째 수 찾기 문제 말씀하시는 건가요?
네 감사합니다.
그러면 혹시 하나만 더 여쭤봐도 될까요?
if (mat[x + 1][y] == '.') {
memcpy(temp, mat, sizeof(mat));
for (i = x + 1; mat[i][y] == '.'; i++)
mat[i][y] = '*';
c1 = go(i - 1, y) + 1;
memcpy(mat, temp, sizeof(mat));
}
if (mat[x - 1][y] == '.') {
memcpy(temp, mat, sizeof(mat));
for (i = x - 1; mat[i][y] == '.'; i--)
mat[i][y] = '*';
c2 = go(i + 1, y) + 1;
memcpy(mat, temp, sizeof(mat));
}
if (mat[x][y + 1] == '.') {
memcpy(temp, mat, sizeof(mat));
for (i = y + 1; mat[x][i] == '.'; i++)
mat[x][i] = '*';
c3 = go(x, i - 1) + 1;
memcpy(mat, temp, sizeof(mat));
}
if (mat[x][y - 1] == '.') {
memcpy(temp, mat, sizeof(mat));
for (i = y - 1; mat[x][i] == '.'; i--)
mat[x][i] = '*';
c4 = go(x, i + 1) + 1;
memcpy(mat, temp, sizeof(mat));
}
배열 같은 경우는 인자에다가 넣어도 파라미터로 전달이 되잖아요?
그런데 재귀함수가 돌면서 배열원본이 변경되지 않도록 하기 위해 다음처럼 조금 비효율적인 코드를 짜곤 하는데,
혹시 이걸 해결할 수 있는 방법이 있을까요?
댓글을 작성하려면 로그인해야 합니다.
rdd6584 6년 전
제목 그대로 배열을 변경시키지 않고 k번째 수를 찾는 방법이 있을까요?
O(n) 시간대에 끝나야 하는데, quick select를 구현했는데, 배열의 값이 계속 변경되서 골치네요ㅠㅠㅠ.