lisagamer   2년 전

다른 테스트 케이스 다 집어넣어도 맞게 나오고, 로직도 틀린 부분이 없는 것 같은데 왜그럴까 싶었습니다.

dp 테이블을 2차원 배열로 만들어서 dp[i][0]은 R 선택했을 때 최소비용, dp[i][1]은 G 선택했을 때, dp[i][2]는 B 선택했을 때의 최소비용입니다. 

최소비용을 뽑아내기위해서 마지막에 *min_element(dp[N-1], dp[N-1]+2)를 사용했었는데, 제가 vs에서 테케 넣어봤을 때는 정삭적으로 출력이 됐습니다. 근데 백준에 제출을 해보니 오답이 계속 나와서, 뭔가 이부분에 문제가 있나 싶어서 아래와 같이 그냥 반복 돌면서 최소값을 찾았는데요, 통과가 됐습니다. 어떤 차이가 있는걸까요? min_element의 인자에 이터레이터를 넣어야하는데 그렇지 않아서 그런가요? 

djm03178   2년 전

*min_element(dp[N-1], dp[N-1]+2) 으로 하면 dp[N-1][0], dp[N-1][1] 둘 중의 최솟값을 찾습니다. min_element의 둘째 인자는 그 위치는 제외하고 그 이전까지에서만 찾습니다.

bupjae   2년 전

52번째 줄에서 +2 가 아니라 +3 이 되어야 합니다.

stl 함수에 iterator 로 "범위"를 넘길 때에는, "시작점"은 자기 자신을 포함하며, "끝점"은 자기 자신을 포함하지 않습니다.

   

vector 같은 컨테이너의 begin(), end() 등도 같은 규칙으로,

begin() 은 시작 데이터를 가리키고 있고 (*begin() 으로 데이터를 얻을 수 있음),

end() 는 마지막 데이터 바로 다음 위치를 "가리키고" 있습니다 (*end() 는 절대로 하면 안 됨).

lisagamer   2년 전

이런 바보같은 실수를 했네요.. 감사합니다 

댓글을 작성하려면 로그인해야 합니다.