작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
73
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 강의 유익하게 수강하고 있습니다.
다름이 아니라 2주차 탐색 코드를 작성할 때 [y][x] 순서로 하는 것을 기본으로 하겠다 언급하고 넘어가셨고 강의 예제에는 정사각배열을 받아서 의문을 가지지 않고 넘어갔는데 문제를 풀다 보니 처음에 표를 입력 받을 때 가로 세로 받는 순서도 그렇고 표 자체도 그렇고 머리 속에서 자꾸 꼬이는데 [y][x] 순서로 하시는 이유를 알 수 있을까요? 그리고 저 순서로 받을 경우에도 y가 세로 x가 가로로 생각하고 편의를 위해서 순서를 저렇게 받는 거라고 인식하고 있는게 맞을까요?
답변 2
0
안녕하세요 ㅎㅎ
처음에 표를 입력 받을 때 가로 세로 받는 순서도 그렇고 표 자체도 그렇고 머리 속에서 자꾸 꼬이는데 [y][x] 순서로 하시는 이유를 알 수 있을까요? 그리고 저 순서로 받을 경우에도 y가 세로 x가 가로로 생각하고 편의를 위해서 순서를 저렇게 받는 거라고 인식하고 있는게 맞을까요?
-> 문제내에서 x, y 순으로 받는 경우는 그 순서대로 진행해도 무방합니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 신동훈님.
DFS와 BFS에서 좌표 순서를 [y][x]로 사용하는 이유에 대해 궁금하신 부분은 많이들 겪는 혼동일 수 있습니다. 보통 프로그래밍에서 2차원 배열을 다룰 때, [행][열]의 순서로 접근하는 것이 일반적입니다. 따라서 [y][x] 순서를 선택하는 이유는 성능적인 측면과 특정 프레임워크나 언어의 구현 방식에 기인합니다.
행 우선 접근: C++의 메모리 저장 방식은 ‘행 우선(row-major order)‘로 설계되어 있습니다. 이는 배열이 메모리에 행 단위로 저장된다는 의미입니다. 따라서 [y][x] 순서대로 접근하면 메모리 접근에서의 캐시 효율이 높아지기 때문에, 더 빠른 실행 속도를 보장할 수 있습니다.
시맨틱: 특정 알고리즘이나 문제에서는 ‘y’가 세로, ‘x’가 가로의 개념에 맞춰지는 경우가 있기 때문에, 이를 바꾸어 생각해 사용 같게 여길 수 있습니다. 즉, 탐색을 코딩할 때, y는 세로 이동(위아래), x는 가로 이동(좌우)을 의미한다고 가정하는 것이 편합니다.
또한, 다음 링크에서도 비슷한 주제를 다루고 있어 참고하시면 도움이 될 겁니다:
- BFS 탐색 관련 질문드립니다.
- BFS x,y 축을 반대로 사용하시는 이유에관해 질문 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.