inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

14502번 재질문 드립니다

201

박완섭

작성한 질문수 15

0

http://boj.kr/840f45d321eb47839eab789e324f7551

 

안녕하세요 저번에 답변 받은 후에도 잘 이해가 안가서 다시 질문드립니다!

 

 

================================================

안녕하세요. ㅎㅎ

 

벽을 세우고 >> 해당 경우의 수에 따른 로직 

 

이후에... 또 다시 벽을 세우잖아요?

 

즉, A라는 테스트를 진행하고 다시 B라는 테스트를 진행하기 때문에 B라는 테스트에 A에서 방문한 정점이 반영되면 안되요ㅎㅎ

 

 

 

각 테스트마다 visited 를 초기화하는 부분이 필요한 것같습니다. 

 

그리고 다음에 코드 올리실 때 백준코드 >> 공유버튼을 눌러서 링크로 남겨주세요. 

 

이렇게 올리시면 제가 보기가 넘 힘들어요 ㅠ 

 

 

 

감사합니다. 

 

강사 큰돌 올림.

 

==================================

 

이렇게 답변 주셨었는데, 32번째 라인부터 36번째까지 초기 배열로 초기화를 하기 때문에 각 테스트마다 이전 테스트의 결과가

반영안되는 것 아닌가 궁금해서 질문드립니다

 

12일간 계속 맞왜틀 시전중이라 꼭 답변 부탁드립니다. 감사합니다!

C++ 코테 준비 같이 해요!

답변 1

0

큰돌

ㅎㅎ 언제든지 물어보세요. ㅎㅎ

 

음.. 

for (int i = 0; i < n; i++) {

for (int j = 0; j < m; j++) {

visited[i][j] = arr[i][j];

}

}

 

for (int i = 0; i < 3; i++) {

visited[s[i].first][s[i].second] = 1;

}

일단 이부분은 초기화는 맞는데요. 

이 문제에서 필요한 로직은

벽을 세우고 >>> 탐색 입니다. 

즉, 벽을 세우는 것도 여러개의 경우의 수가 필요하고 해당 경우의 수마다 ... "탐색"을 해야 하니 탐색을 초기화를 시켜야 하는 것이죠. 일단 탐색에 관해 초기화하는 것은 이해 하신 것같습니다. 

 

그러나 지금 이 부분이 이해가 안된다는 말씀 같은데.. 

for (int i = k; i < h.size(); i++) {

s.push_back(h[i]);

combi(k + 1);

s.pop_back();

}

아니 분명 초기화 시켰는데 왜 또 이런식으로 pop_back()을 하냐... 그런 말씀이시죠? 

자 그래서 제가 그림을 그려봤습니다. 

일단 visited를 초기화 하는 것은 좀 분리해서 생각해주세요.

먼저 벽을 세운다만 집중해보죠. 

저렇게 pop_back()을 하는 것은 이렇게 2개를 벽을 세웠죠? 그 다음에 오른쪽에 세우는 경우의 수를 체크하고... 그리고 다시 pop_back()을 한다음 오른쪽이 아닌 아래쪽에 벽을 세우는 경우의 수를 체크해야 하니까 그런 겁니다. 

이건 초기화라고 보기엔 좀 그렇고.. 벽을 세우고.. 다시 벽을 치웠다가 또 다른 벽을 세운다. 라고 보시면 됩니다. 

이렇게 벽을 세우고 >> 초기화 >> 탐색 이렇게 일어난다고 보시면 됩니다. 

탐색에 대해 첨언하자면 이렇게 벽을 세우는 경우의 수마다... "탐색"이 많이 일어나니. 탐색할 때마다 visited 초기화는 당연히 해야 되는 것이구요.

 

감사합니다. 

1-E질문입니다!

0

533

2

3-L 틀린 부분 피드백 부탁드립니다.

0

836

2

1-A문제 순열재귀함수 질문입니다.

0

396

1

1-A 일곱난쟁이문제입니다

0

471

1

문제 풀 때 방향성에 대해

0

811

1

맥에서 vs code로 실행 관련 질문입니다

0

530

1

17071번 메모리 초과

0

390

1

1-C질문입니다!

0

428

2

2-B BFS 시간초과질문

0

638

2

1-O 13번 라인

0

447

1

6-J 놀이공원 문제 질문

0

390

1

구현관련 질문

0

492

1

강의 교안

0

322

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

550

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

540

1

1-K

0

481

2

3-G번 질문있습니다.

1

481

3

3-C 실행 시간 질문드립니다.

0

503

1

4-A 문제 풀이 질문있습니다.

0

601

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

441

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

349

1

3-O go 함수 질문 드립니다.

1

453

2

4-A 출력 질문

0

308

1

1주차 1-O 질문드립니다

0

266

1