14500번 - 테트로미노
안녕하십니까, DFS를 활용한 문제를 풀던 中 궁금증이 있어 질문드리게 되었습니다.
아래와 같이 DFS를 구성하였을 때, boolean[][] check 함수의 값이 계속 유지되는 건에 대한 의문인데요.
DFS를 하던 中 check 값을 통하여 중복 체크를 진행하였을 때, DFS를 진행하면서 check의 값이 복사되어 같은 값을 가진 다른 배열이 되어 진행이 되잖아요?
그럼 DFS가 진행될 때마다 check가 하나씩 생기고, 그 DFS가 끝나게 되면 해당 check 배열은 사라지면서, 다음 DFS로 진행이 되어야 한다고 생각합니다.
근데 그 값이 그대로 전해지는 것이 아니라 check 함수 값 자체에 주소값으로 접근을 하는 것 같습니다.
그래서 check 값의 초기화가 안되는 것 같은데... 제가 무언가 잘못 알고 있는건가요?
귀찮게해드려 죄송하지만 상세히 답변좀 부탁드리겠습니다ㅠ
자바는 primitive 타입을 제외한 모든 오브젝트는 레퍼런스로 전달됩니다. 배열도 마찬가지입니다.
Reference로 전달되는데도 check 값이 계속 유지가 되는 이유는 뭘까요?ㅠㅠ
reference가 뭔지 검색해보시면 될듯합니다!
레퍼런스로 전달되니까 값이 안 변하죠. 복사가 아니라, 그 배열의 위치만 전달한 거니까요.
댓글을 작성하려면 로그인해야 합니다.
huyng1233 5년 전
안녕하십니까, DFS를 활용한 문제를 풀던 中 궁금증이 있어 질문드리게 되었습니다.
아래와 같이 DFS를 구성하였을 때, boolean[][] check 함수의 값이 계속 유지되는 건에 대한 의문인데요.
DFS를 하던 中 check 값을 통하여 중복 체크를 진행하였을 때, DFS를 진행하면서 check의 값이 복사되어 같은 값을 가진 다른 배열이 되어 진행이 되잖아요?
그럼 DFS가 진행될 때마다 check가 하나씩 생기고, 그 DFS가 끝나게 되면 해당 check 배열은 사라지면서, 다음 DFS로 진행이 되어야 한다고 생각합니다.
근데 그 값이 그대로 전해지는 것이 아니라 check 함수 값 자체에 주소값으로 접근을 하는 것 같습니다.
그래서 check 값의 초기화가 안되는 것 같은데... 제가 무언가 잘못 알고 있는건가요?
귀찮게해드려 죄송하지만 상세히 답변좀 부탁드리겠습니다ㅠ