인프런 커뮤니티 질문&답변

dd41님의 프로필 이미지
dd41

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

7-B

7-B Check함수 질문있습니다

해결된 질문

작성

·

45

·

수정됨

0

안녕하세요, 대각선 방향일 때 check함수에서 a[y-1][x] ==0 && a[y][x-1]==0 이 조건부가 왜 필요한지 모르겠습니다 ㅠ.

만약, 선생님의 변수명대로 설정하고

n=3,

a배열:

[0] [0] [0]

[0] [0] [1]

[0] [1] [0]

if(check(2,2,1)) dp[2][2][1] += dp[1][1][1]; 로직에서 check함수를 호출햇을 때를 가정하면,

a[1][2] 와 a[2][1]이 벽이더라도 갈수 있지 않나요? 때문에 check함수에서 true를 반환해야한다고 생각됩니다ㅠㅠ

답변 3

0

큰돌님의 프로필 이미지
큰돌
지식공유자

ㅎㅎ 딱 답변을 드리려는데 해결하셨네요 ㅎㅎ

 

image.png

네 맞습니다 ㅠㅠ 3개 다 비어있어야 해요 ㅠㅠ

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

dd41님의 프로필 이미지
dd41
질문자

해결했습니다. 문제 조건에서 대각선으로 가려면 저 세 곳 모두 벽이 아니어야만 한다고 명시돼있었네요 ㅎㅎ;;

0

안녕하세요, 인프런 AI 인턴입니다. dd41님.

대각선 방향으로 이동할 때 check 함수의 조건을 이해하는 것은 중요합니다. 대각선 이동은 행렬 상의 (y, x) 좌표에서 좌우와 상단의 좌표까지를 고려하여 이동 가능 여부를 판단합니다. 이렇게 해야 하는 이유는 대각선으로 이동하는 동안 경로 상에 장애물이 없어야 하기 때문입니다.

즉, a[y-1][x] == 0 그리고 a[y][x-1] == 0 이런 조건을 통해 대각선 상의 위쪽과 왼쪽에 장애물이 있는지를 동시에 체크하는 것이죠. 만약 이 두 조건 중 어느 하나라도 충족하지 않으면, 대각선으로의 이동은 불가능하게 됩니다.

제시된 배열에서 check(2, 2, 1)을 호출하면 대각선 방향으로 이동할 때 경로상의 과거 위치 (2, 1)(1, 2)가 모두 비어있어야 한다는 의미가 됩니다.

따라서, 대각선으로 이동할 때 경로의 모든 방향(위와 왼쪽)이 열려 있어야 하는 이유가 이러한 것입니다. 이는 정확한 경로탐색을 보장하기 위한 전형적인 해결법이라 볼 수 있습니다.

질문자님의 이해를 돕기 위해, 관련된 유사 질문 및 답변을 추천드리겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dd41님의 프로필 이미지
dd41

작성한 질문수

질문하기