혹시 이건 왜 안되는지 말씀해주실 수 있나요??
#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;
}
Câu trả lời 2
0
안녕하세요 석종엽님.
올려주신 내용은 직접 실행하며 디버깅을 실시해야 하는 문제로 생각이 됩니다.
인덱스 변수 i의 변화에 따른 dp 배열 내용물의 변화를 실시간으로 살펴보며 디버깅을 진행하여 보면 문제를 식별할 수 있으리라 생각이 됩니다.
이러한 문제는 코드 작성자가 가장 잘 수행할 수 있는 부분이니, 디버깅을 시도해보시고 어려움이 있다면 질문을 부탁드립니다.
석종엽님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.
이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
코드를 살펴보니 max 함수는 제대로 동작하지만, min 함수가 y < x 인 경우에 return이 선언되지 않아서 런타임 에러가 발생할 수 있습니다. 따라서 min 함수도 y < x 인 경우에는 x가 반환되도록 수정해주어야 합니다.
그리고 dp 배열의 초기값이 6번째부터 시작하는데, 3번째와 5번째까지는 수동으로 초기화가 되어 있습니다. 이 부분은 이해하기 어려울 수 있으므로 더 쉽게 초기화하는 방법을 고려해보는 것이 좋을 것 같습니다.
또한 dp 배열을 출력할 때, 인덱스가 0부터 시작되는데, 초기화된 값이 6번째부터 시작하기 때문에 처음 다섯 개의 값은 출력하지 않는 것이 더 명확할 것 같습니다.
이러한 수정이 완료되면 코드가 원하시는 대로 동작할 것입니다. 답변이 도움이 되었길 바랍니다.
코딩살구클럽 관련 건의사항
0
2
0
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
2
0
수강평 이벤트
0
17
2
진행 방법 질문드립니다!
0
31
2
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
19
1
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
15
1
동전문제 풀이 질문
0
57
2
장기문제 최종 cpp파일
0
122
2
이해가 안되는 부분이 있습니다.
0
321
1
f20 에서 f15 + 1은 이해가 됩니다...
0
347
1
배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?
0
493
1
코딩테스트 공부법에 대한 질문
0
612
1
입력함수 출력함수 관련
0
399
1
강의자료
0
1181
1
동전구현문제
0
350
1
아파트 단지 문제
0
297
2
DFS
0
410
1
수업하신 PPT 자료는 다운 못하나요?
0
342
1
C언어로 푼 코드는 없나요?
0
317
1
안녕하세요! 왜 +1 을 하는 지 모르겠습니다
0
206
1
DFS함수 동작 원리 강의 14분 33초 호출 스택 관련 질문
0
212
1
코드를 무조건 짧게하는게 좋은건가요?
1
378
1
이해한게 맞는지 잘 모르겠습니다
1
256
1
모범 답안
0
365
1

