카테고리 없음
2891
lriyan
2024. 6. 17. 13:43
문제를 풀다 모르겠는 부분을 참고하여 문제를 풀었다.
코드는 간단하게 1로 초기화된 벡터를 선언하고 부서진 부분의 해당하는 벡터를 0으로 만들고 여유분의 카약가 있는 벡터를 ++하여 파손된 부분의 벡터의 앞,뒤중 2개 이상의 카누를 가진 벡터에서 한개를 빼오면 된다.
for(int i=0; i<r; i++) {
cin >> num;
if(v[num]==0)
v[num]=1;
else if(v[num-1]==0 && num>=1)
v[num-1]=1;
else if(v[num+1]==0 && num<=n-1)
v[num+1]=1;
}
처음 코드를 작성할때는 값을 입력 받자마자 벡터를 계산하도록 코드를 작성하였지만 위 코드는 카약의 여유분의 앞,뒤로 존재할경우 카약을 빌려줄수 있는 경우에도 코드의 순서의 의해 카약을 빌려주지 못한다 출력하는 경우가 생기기에 오류가 발생했다. 따라서 처음부터 여유분의 벡터를 2로 설정하고 카약이 파손된 벡터값을 기준으로 코드를 짜 문제를 풀어야 했다.