9169번 - 나는 9999번 문제를 풀 수 있다
vector<vector<int>> adj;
인접리스트를 만들기 위해 다음과 같은 vector를 전역변수로 선언하였습니다.
1. adj = vector<vector<int>>(MAX_N, vector<int>());
2. adj.resize(MAX_N);
두 표현은 같은 표현 아닌가요? 이 문제에서 1로 하면 틀리고 2로하면 맞게 나오네요..
1. https://www.acmicpc.net/source...
2. https://www.acmicpc.net/source...
50번째 줄만 다릅니다.
제가 잘못알고 있었던 건지.. ㅠㅠ 알려주세요
1은 새롭게 초기화된 벡터를 adj에 대입하는 코드이고
2는 기존의 adj 벡터의 크기를 늘리는 코드입니다.
차이점은 2에서는 adj 벡터의 초기화가 이루어지지 않는것입니다. 즉, size가 줄어들지 않는 한 adj 벡터 안의 내용이 유지됩니다.
아 감사합니다.
잘못알고있는 부분이 있긴했군요
근데 이 문제에 대해서 많은 분들이 테스트 케이스마다 resize로 벡터를 확장을 시켰는데
초기화를 시켜야 되는거 아닌가요? 으.. 가치관에 혼란이 오네요
아마 그 분들은 adj가 전역에 있지않고 테스트케이스 반복문안에 선언되어있거나
resize 전에 clear를 수행해주지 않았나 생각해봅니다.
class로 선언해서 소멸될때 clear되네요.
답변 감사합니다. 아직 의문점인게 있지만 해결해볼게요
댓글을 작성하려면 로그인해야 합니다.
lyzqm 6년 전
vector<vector<int>> adj;
인접리스트를 만들기 위해 다음과 같은 vector를 전역변수로 선언하였습니다.
1. adj = vector<vector<int>>(MAX_N, vector<int>());
2. adj.resize(MAX_N);
두 표현은 같은 표현 아닌가요? 이 문제에서 1로 하면 틀리고 2로하면 맞게 나오네요..
1. https://www.acmicpc.net/source...
2. https://www.acmicpc.net/source...
50번째 줄만 다릅니다.
제가 잘못알고 있었던 건지.. ㅠㅠ 알려주세요