격자 이동과 방향 벡터
dx, dy로 이동하며 범위 안에 머뭅니다
격자 이동과 방향 벡터은(는) CoddyKit의 무료 Competitive Programming Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Competitive Programming Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
격자 위를 걸어가기
많은 모의 실행은 행과 열로 이루어진 격자에서 진행됩니다. 토큰 하나가 어딘가에서 시작해 방향을 따라 칸 단위로 이동합니다. 🗺️
행과 열 추적하기
위치를 (r, c) 쌍으로 저장하세요. 행은 위에서 아래 방향을, 열은 왼쪽에서 오른쪽 방향을 나타냅니다.
r, c = 0, 0방향 벡터
각 이동을 (dr, dc) 벡터로 표현하세요. 이 벡터를 위치에 더하면 조건문 연쇄 없이 해당 방향으로 한 칸 이동합니다.
dr, dc = 0, 1 # move right네 이웃 칸
네 가지 이동을 배열에 저장해 반복문으로 순회하세요. 위, 아래, 왼쪽, 오른쪽을 사용하는 표준 패턴입니다.
DR = [-1, 1, 0, 0]
DC = [0, 0, -1, 1]한 단계 이동하기
이동하려면 선택한 벡터를 현재 칸에 더하기만 하면 됩니다. 같은 두 줄로 네 방향 중 어느 쪽으로든 이동할 수 있습니다.
r += DR[k]
c += DC[k]범위 안에 머무르기
이동하기 전에 해당 칸이 격자 안쪽에 있는지 확인하세요. 행의 범위는 0부터 R-1까지이고 열의 범위는 0부터 C-1까지입니다. 그 밖의 칸은 격자 밖입니다.
if 0 <= r < R and 0 <= c < C:
pass허용되는 경우 대각선 이동
일부 문제에서는 대각선 이동도 허용합니다. 네 모서리 방향 벡터를 더하면 여덟 방향의 이웃 집합을 만들 수 있습니다.
DR8 = [-1,-1,-1,0,0,1,1,1]
DC8 = [-1,0,1,-1,1,-1,0,1]왼쪽 또는 오른쪽으로 회전하기
회전하는 로봇이라면 여러 경우를 직접 작성하지 말고 바라보는 방향 번호를 회전시키세요. 나머지 연산을 사용하면 네 방향을 계속 순환할 수 있습니다.
facing = (facing + 1) % 4 # turn right막힌 칸과 벽
이동하기 전에 격자의 값을 확인하세요. 칸이 벽이면 문제의 규칙에 따라 건너뛰거나 멈추면 됩니다.
if grid[r][c] == '#':
continue순환하는 격자
격자가 이어져 순환한다면 좌표에 크기에 대한 나머지 연산을 적용하세요. 그러면 오른쪽 가장자리가 왼쪽 가장자리로 자연스럽게 연결됩니다.
r = (r + dr) % R
c = (c + dc) % C벡터가 유리한 이유
방향 벡터를 사용하면 복잡하게 얽힌 조건문 블록을 깔끔한 반복문 하나로 바꿀 수 있습니다. 분기 수가 적을수록 대회 중 발생하는 오류도 줄어듭니다.
빠른 확인
방향 벡터를 사용해 격자를 이동하면서 격자 밖으로 나가면 안 됩니다.
복습
위치를 (r, c)로 저장하고, 방향 벡터를 더해 이동하며, 네 이웃 칸을 반복해서 확인하고, 이동하기 전에 항상 범위를 검사하세요. 🚀
자주 묻는 질문
“격자 이동과 방향 벡터” 강의는 무료인가요?
네 — “격자 이동과 방향 벡터” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Competitive Programming Academy 강의 전체를 잠금 해제할 수 있습니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“격자 이동과 방향 벡터”에서 뭘 배우나요?
dx, dy로 이동하며 범위 안에 머뭅니다 브라우저에서 직접 실행하는 실습 코드로 Competitive Programming Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Competitive Programming Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Competitive Programming Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“격자 이동과 방향 벡터” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Competitive Programming Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Competitive Programming Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.