보통 행렬을 다루니까 row, col 변수명을 사용한 것이고, 상관은 없습니다.
인공지능 챗GPT에게 width, height로 작성해달라고 했습니다.
width, height로 쓰는 게 더 직관적이기는 합니다.
중요한 건 2차원 배열에서 array[세로크기][가로크기]입니다.
수학에서는 행렬이니까 행 -> 열의 순서이죠?
행 = 가로
열 = 세로
그러니까 수학처럼 생각해서
array[가로크기][세로크기]로 하면 인덱스 계산을 해보면 배열의 최대 범위를 벗어나는 경우가 생기기 때문에 반드시 index out of range 에러가 발생합니다. C 언어에서는 access violation이라고 표시하겠죠.
정사각형 NxN 행렬이면 가로, 세로를 바꿔써도 오류가 발생하지 않습니다. 대다수 C 언어 입문서가 여기서 실수를 하죠.
하지만 실제로 이미지 파일 등은 직사각형 크기이죠.
모니터의 해상도도 1920x1080처럼 직사각형입니다. 따라서 가로, 세로를 바꿔 쓰면 에러가 납니다. 가로, 세로를 바꿔 써서 에러가 안 나는 코드를 작성할 수 있으면 그렇게 하시면 됩니다.
아니면 수학의 행렬과 컴퓨터가 메모리를 접근하는 방식의 차이를 이해하려는 노력을 사람은 해야겠지요.
수학에서 2차원 평면을 그리면 (0, 0) 좌표의 위치는 왼쪽 아래 구석입니다.
컴퓨터는 모니터에 이미지를 표시할 때 왼쪽 위가 (0, 0)이고 시작 위치입니다.
컴퓨터가 입력에 따라 데이터를 처리하고 1바이트씩 화면에 순차적으로 쓴다면 왼쪽 위에서부터 씁니다. 그렇게 한 줄씩 결과를 처리하면서 출력하고, 그 결과가 전체 화면을 채우는 그림이 됩니다.
수학 시간에 왼쪽 아래가 (0, 0)이니까 컴퓨터도 그렇게 되지는 않습니다. 역사적으로 그렇게 처리하지 않았죠.
콘솔 시절이면 화면이 넘치면 위에 있는 글씨가 지워지면서 아래로 스크롤이 되었죠.
1. 컴퓨터가 처리하는 방식에 익숙해져야 합니다.
2. 변수명은 row, col보단 width, height로 쓰는 게 더 직관적입니다.
다만, 변수명 row, col은 작가님의 선택입니다. 답변을 쓰는 건 사이트 관리자이고, 관리자는 width, height를 추천합니다. 본문의 세로, 가로 크기와도 더 직관적일 겁니다. 다만 영어 글자는 몇 자 더 타이핑해야죠.
현장에서 실습할 때 보면 영타 귀찮아서 r, c, w, h 등으로 치는 것도 자주 보니까요. 그러나 영타 실력도 늘리는 게 좋죠.
이게 아니면
3번. 수학의 행렬과 같이 가로 -> 세로로 처리하는 나만의 프로그래밍 언어를 만들어본다(요즘 유튜브에 보면 따라 할 수 있는 영상들 많이 있습니다).
4번. 내 생각대로 처리할 수 있는 마이크로프로세서(CPU)를 직접 제작한다(역시나 유튜브에 있고, 빵판 + 납땜할 수 있는 약간의 돈만 있으면 됩니다). 없으면 마인크래프트에서 CPU 만들기 검색해서 마인크래프트에서 CPU를 직접 만드는 레벨도 있습니다.
3, 4번은 독자적인 사파의 경로라고 봅니다만,
1, 2번은 대다수가 따르는 정파의 경로입니다.
정파나 사파나 선택의 영역이니 선택하시면 됩니다.