qqa12345   2년 전

안녕하세요. 저는 dp랑 그리디에 대해 공부 중인데요..

여기 많은 코드들이 저와 조금>?? 다르게 코드가 작성되어 있는데,, 제가 작성한 방식도 dp라고 할 수 있을까요?

제가 생각하는 dp는 탑다운과 바텀업 방식이 있으며 큰 문제를 작은 문제로 나눌 수 있고 작은 문제의 값이 큰문제에서도 동일하게 적용되야 한다 입니다. 

또한 제가 선택한 것은 바텀업이며 저는 현재값으로 다음 연산한 뒤의 값을 구하도록 하였습니다. 

그런데 대다수의 분들이 이 전 값으로부터 현재 수를 구하는 바텀업으로 작성하였던데 이것은 그냥 작성 방식의 차이일까요? 

아니면 dp 문제의 경우 현재값을 구하는 법으로 접근하는게 좋은가요? 

제가 실력이 부족해서 질문이 명확하지 못해서 죄송합니다.ㅠㅠ

0000000000   2년 전

그저 작성 방식의 차이일 뿐 대부분의 경우 별다른 차이는 없습니다. 그나저나 위 코드에서 memset() 함수의 사용 방법이 잘못되었네요.

qqa12345   2년 전

혹시 뭐가 잘못됐는지 알 수 있나요? 

0000000000   2년 전

memset() 함수는 1바이트 단위로 값을 초기화하는데 int형은 4바이트이기 때문에 memset(a,b,c)에서 b에 0이나 -1이 아닌 int형을 넣게 되면 배열의 값이 이상한 값으로 세팅되게 됩니다. 그러나 이 값은 대부분의 경우 매우 크기 때문에 1000001을 넣었을 때 또한 매우 큰 값으로 초기화되어 오답이 나오지 않은 것입니다. int형으로 배열을 초기화할 때는 memset()보다는 fill() 함수를 추천드립니다.

qqa12345   2년 전

아하 감사합니다!! 

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