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

__yourspring님의 프로필 이미지
__yourspring

작성한 질문수

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

2주차 개념 #9. 깊이우선탐색(DFS, Depth First Search)

13:04 방귀 문제 질문입니다.

작성

·

57

·

수정됨

0

13:04 질문이 있습니다.

방구를 뀌었을 시 상하좌우로 퍼져나간다고 문제가 전제되었을 때

1. 크레이지 아케이드의 물폭탄처럼 해당 지점의 상하좌우로 퍼져나가는지

2. 그게 아니라면 오염받은 지점 역시 다음번에 그 지점으로 부터 오염이 이어나가져 주는지는 어떻게 구분하시나요?

조금 더 직관적으로 질문을 드리자면 Connected Component로 할 경우 각 4개로 구분이 되므로

1번 상황의 경우 1번째 육지에서 2행1열에 서 뀌면 한번에 오염이 되겠지만

2번 상황의 경우엔 아무데나 뀌어도 전체가 오염이 될 것입니다.

혹시 이런 판단을 어떻게 내리시는지 여쭤봐도 될까요?

코딩테스트에서 문제에 대해서 직관적으로 이해가 항상 제일 어려운 문제인 것 같습니다. ㅜㅜ 너무 문맥 파악이 어렵네요.


ps. 추가된 질문인데 한번 방귀를 뀔 때 4방향만 오염된다고 했을 때 혹시 만약 저 상황에서 최소한의 방귀로 오염시킬 수 있는 횟수를 구하라고 한다면 추가적으로 어떤 로직이 필요할까요?

답변 2

0

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

혹시 이런 판단을 어떻게 내리시는지 여쭤봐도 될까요?

>> 음.. 4방향으로 뻗어나간다 = 4방향으로 방귀가 퍼져나간다로 이해를 했는데요. 4방향만 하고 끝난다면 -> 방귀는 뻗어나가지 않고 4방향으로 오염되고 중지된다. 라는 식의 지문이 있을거에요 ㅎㅎ

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

명쾌하신 해답 언제나 감사합니다!

0

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

안녕하세요ㅎㅎ

.크레이지 아케이드의 물폭탄처럼 해당 지점의 상하좌우로 퍼져나가는지

>> 네 맞습니다.

 

2. 그게 아니라면 오염받은 지점 역시 다음번에 그 지점으로 부터 오염이 이어나가져 주는지는 어떻게 구분하시나요?

>> 제 생각에는 DFS 처럼 그 방향으로 계속해서 이어나간다라는 것 같은데요. 그럴 수도 있습니다. 다만 4방향으로 계속해서 이어나간다고 보시면 됩니다. 그니까 오른쪽으로만 뻗어나가는 것이 아닌 4방향으로 뻗어나간다로 보시면 됩니다.

추가된 질문인데 한번 방귀를 뀔 때 4방향만 오염된다고 했을 때 혹시 만약 저 상황에서 최소한의 방귀로 오염시킬 수 있는 횟수를 구하라고 한다면 추가적으로 어떤 로직이 필요할까요?

>> 완탐으로 푸시면 됩니다. 방귀한번에 -> 4방향 다 오염 된다 라는 로직을 기반으로 -> 전체좌표에서의 모든 경우의수(nC1, nC2 ... 등) 를 탐색해나가면서 최솟값을 잡으면 될것 같습니다.

이부분은 3주차 개념강의 때 배웁니다. 좋은 생각이십니다.


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

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

감사합니다.

강사 큰돌 올림.

Connected Component로 할 경우 각 4개로 구분

>> 그게 아니라 맵 기준으로

{0, 0}

{0, 0}

__yourspring님의 프로필 이미지
__yourspring

작성한 질문수

질문하기