강의

멘토링

로드맵

Inflearn brand logo image

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

log님의 프로필 이미지
log

작성한 질문수

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

2-P

2-P 벽세우는 부분 로직에 궁금한 점이 있습니다.

작성

·

211

0

전반적인 로직과 풀이는 이해가 되는데.. 궁금한 점이 있어 질문 남깁니다.

 

```

for(int i=0; i<v.size(); i++){
        for(int j=0; j<i; j++){
            for(int k=0; k<j; k++){
                a[v[i].first][v[i].second] = a[v[j].first][v[j].second] = a[v[k].first][v[k].second] = 1;
                ans = max(ans, solve());
                a[v[i].first][v[i].second] = a[v[j].first][v[j].second] = a[v[k].first][v[k].second] = 0;
            }
        }
    }

```

`v` 에 벽을 세울 수 있는 공간을 저장하고 있고 3개의 벽을 세워야 하기 때문에 3중 for 문으로 벽을 세우는 로직을 이해했습니다.
하지만

```

for(int i=0; i<v.size(); i++){
        for(int j=0; j<i; j++){
            for(int k=0; k<j; k++){

```

i<v.size() / j<i; / k<j 의 범위를 이렇게 해줘야하는지 이해가 되지 않습니다. 

답변 1

0

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

안녕하세요. ㅎㅎ

그걸 하지 않으면 0, 0, 0 이런식으로 출력이 됩니다. 

 - 즉 필요없는 경우의 수를 없애기 위해서 필요합니다. 

0, 1, 2

이런식으로 벽을 세우는 수가 필요하니까요.

cout << i << j << k 이런식으로 디버깅을 해보시기를 추천드립니다. :)

 

감사합니다. 

log님의 프로필 이미지
log

작성한 질문수

질문하기