작성
·
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 이런식으로 디버깅을 해보시기를 추천드립니다. :)
감사합니다.