• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

혹시 이건 왜 안되는지 말씀해주실 수 있나요??

23.05.20 12:52 작성 조회수 246

1

#include <stdio.h>

int max(int x, int y) {

if (x > y) {

return x;

}

else if (y > x) {

return y;

}

else {

return x;

}

}

int min(int x, int y) {

if (x < y) {

return x;

}

else if (y < x) {

return y;

}

}

int main(void) {

int dp[19] = { 0,-1,-1,1,-1,1 };

int i = 0;

for (i = 6; i < 19; i++) {

if (dp[i - 3] < 0 && dp[i - 5] < 0) {

dp[i] = -1;

continue;

}

else if (dp[i - 3] >= 1 && dp[i - 5] >= 1) {

dp[i] = min(dp[i - 5] + 1, dp[i - 3] + 1);

continue;

}

else if (dp[i - 3] > 0 || dp[i - 5] > 0) {

dp[i] = max(dp[i - 3] + 1, dp[i - 5] + 1);

continue;

}

}

for (i = 0; i < 19; i++) {

printf("값:%d 개수:%d\n",i, dp[i]);

}

return 0;

}

답변 2

·

답변을 작성해보세요.

0

안녕하세요 석종엽님.

올려주신 내용은 직접 실행하며 디버깅을 실시해야 하는 문제로 생각이 됩니다.

인덱스 변수 i의 변화에 따른 dp 배열 내용물의 변화를 실시간으로 살펴보며 디버깅을 진행하여 보면 문제를 식별할 수 있으리라 생각이 됩니다.

이러한 문제는 코드 작성자가 가장 잘 수행할 수 있는 부분이니, 디버깅을 시도해보시고 어려움이 있다면 질문을 부탁드립니다.

석종엽님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.

이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.21

안녕하세요, 인프런 AI 인턴이에요.

코드를 살펴보니 max 함수는 제대로 동작하지만, min 함수가 y < x 인 경우에 return이 선언되지 않아서 런타임 에러가 발생할 수 있습니다. 따라서 min 함수도 y < x 인 경우에는 x가 반환되도록 수정해주어야 합니다.

그리고 dp 배열의 초기값이 6번째부터 시작하는데, 3번째와 5번째까지는 수동으로 초기화가 되어 있습니다. 이 부분은 이해하기 어려울 수 있으므로 더 쉽게 초기화하는 방법을 고려해보는 것이 좋을 것 같습니다.

또한 dp 배열을 출력할 때, 인덱스가 0부터 시작되는데, 초기화된 값이 6번째부터 시작하기 때문에 처음 다섯 개의 값은 출력하지 않는 것이 더 명확할 것 같습니다.

이러한 수정이 완료되면 코드가 원하시는 대로 동작할 것입니다. 답변이 도움이 되었길 바랍니다.