게시판

검색 결과: 52

 

반복되는 질문이어서 추가 등록합니다.


가로, 세로 인덱스가 바뀐 게 아닌가요?


직관하고 달라서 자주 나오는 질문인데요.

행렬이니까 행과열이라 생각하고, 행 = 가로, 열 = 세로라고 생각하는데요.

행을 세는 순서를 생각해보세요.

1행
2행
3행
...

이렇게 세로로 세죠?

다음으로

1열, 2열, 3열, 4열, ...

이렇게 가로로 세어 나가죠?

아파트에서 1510호를 가야하면

먼저 15층으로 세로로 이동하고,

10호까지 가로로 이동합니다.

수학에서의 행렬처럼 직관으로 이해하면 이상하게 보입니다.

더 자세한 설명은 다음 링크의 답변을 참고하세요.

직관하고 달라서 자주 나오는 질문인데요.

위 링크를 참조해주세요.

행렬이니까 행과열이라 생각하고, 행 = 가로, 열 = 세로라고 생각하는데요.

행을 세는 순서를 생각해보세요.

1행
2행
3행
...

이렇게 세로로 세죠?

다음으로

1열, 2열, 3열, 4열, ...

이렇게 가로로 세어 나가죠?

아파트에서 1510호를 가야하면

먼저 15층으로 세로로 이동하고,

10호까지 가로로 이동합니다.

수학에서의 행렬처럼 직관으로 이해하면 이상하게 보입니다.

15층, 10호까지 있는 아파트는 15x10으로 표현하고, 이차원 배열이면 apt[15][10]일 겁니다.
apt[세로인덱스][가로인덱스]가 되지요?
15는 세로인덱스, 아파트의 층수입니다.

10층 15호까지 있는 아파트라면 apt[10][15]라고 써야 합니다.

수학의 행렬에서 행은 해당 층 전체를 지칭하는 표현입니다.

즉, 15층에 있는 1~10호는 모두 15층에 있다고 표현합니다. 수학에서도 15행에 있다고 표현합니다. 그러나 행을 세는 순서는 수직입니다. 1행, 2행, 3행, 행을 올라가면서 셉니다.
1~10호는 행렬에서 열에 해당합니다. 1열, 2열, 3열,... 가로로 나아가면서 셉니다.
물론, 1열 전체를 가리킬 때는 1열이라고 합니다. 즉, 아파트 101, 201, 301, 401, 501, ... 처럼 1호 전체를 가리킬 때는 1열이라고 표현합니다.

대다수가 오해하고 있지만, 우연히도 가로, 세로가 바뀌어도 문제가 없었던 것은 10x10처럼 직사각형 행렬 또는 2차원 배열을 예제로 설명하기 때문입니다.

감사합니다.

ps. C 언어 답변이 주로 되어 있는데, 파이썬에는 배열이 없습니다. 배열 대신 리스트를 씁니다. C 언어의 2차원 배열이나 파이썬의 2차원 리스트나 [세로인덱스][가로인덱스]는 같습니다.


, 도장_ 관리자님이 작성
 

가로와 세로가 헷갈립니다!
세로 변수를 row, 가로 변수를 col로 선언하는 게 맞나요? 네, 맞습니다.
다음 답변을 참고하세요. <C 언어 코딩 도장>의 답변입니다.
사람의 직관이 아니라 메모리가 할당되는 방식을 이해하세요.

100x100으로 정사각형 2차원 배열 또는 행렬일 때는 문제가 없으나 100x200처럼 직사각형 2차원 배열 또는 행렬일 때는 문제가 발생하는 경우도 답변이 되어 있습니다.