#include<stdio.h>
int main(void)
{
int a=1,b=1,c=1,r;
r=500*a+700*b+400*c;
for(a=1;r<=3500;a++)
{
for(b=1;r<=3500;b++)
{
for(c=1;r<=3500;c++)
{
r=500*a+700*b+400*c;
if(r==3500)
printf("%d배%d사과%d바나나\n",a,b,c);
}
}
}
return 0;
}
안될이유가 없지않나요?
삼중루프 3500^3 머냐 - dc App
저게, 제가 생각한건 r=500*a+700*b+400*c; 로 해뒀으니까, 그걸 for문 안에 썼거든요.
제가 노린건, a=1 b=1 c=1 일케 내려가다가 c가 1씩 올라가다가, r값이 3500보다 커지면, a=1 b=2 c=1 일케 바뀌고, 또 c가 1씩올라가고 그러다, 또 3500초과하면 a가 증가하고 이런식으로 하려고했는데
말이 존나 올라갔다 내려갔다 하긴한데 어쨋든 저런식으로 하려면 코드를 어떻게 수정해야 굴러가는건지 궁금합니다..센세
a가 500원이니 a의 범위를 7위로는 안되게 낮춰봐 - dc App
굴러갈걸? - dc App
그 그런식으로 계산하는게 답지에 나오기는 한데, 뭔가 그렇게 풀면 a값을 제가 임의로 계산해서 넣게 되는거잖아요? 그게 뭔가 마음에 안들어서 그 과정까지 코드에 넣고 싶었습니다.
다들 a b c를 각각 3500에 나눠서 그걸로 제한하긴 하던데... 그냥 호기심에 여쭤봅니다.
ㅇ니 - dc App
아니 하나로 몰빵되는 경우를 생각하면 a는 최대7 b는 최대5 c는 최대 9로 하면 되지 a가 8이면 4000원되서 항상 3500원초과함 - dc App
100원짜리를 모아서 1000원을 만들어야하는데 100원짜리가 11개이상 되는 경우를 뭐하러 생각함 - dc App
그 말씀이 맞습니다. 다들 그렇게 풀기도 하구.. 근데 말씀해주신 100원짜리 10개 예시를 들어 보이자면,
100원짜리로 1000원을 만들때, 100원짜리의 개수는? 이문제를 구할때, 저희는 1000을 100원으로 나눌수도 있지만, 100원짜리를 하나하나 쌓아가다가, 1000원을 넘기는 시점에서 그만해라! 라고 해서 100원짜리의 개수를 구할수도 있잖아요? 전자에 해당하는건 제가 직접 1000/100을 해서 값을 넣어줘야 되는데 후자에 해당하는건 컴퓨터가 그 과정까지 대신 해주는 느낌이라... 제가 초보라 좀 어긋난 생각을 한것같긴 한데 그냥 이렇게는 안되나 궁금했어요. 맞는 예시를 든건지는 잘 모르겠네요. 제 생각이 잘 전달되었나 모르겠습니다.
어쨋건 제가 임의로 계산해서 최대값을 넣는 과정을 없애고 싶었어요. 그러다 보니, 저런 방식이 생각 났었습니다.
for문은 반복횟수가 정해져있을때 쓰기 좋고 너가 말한거처럼 몇번반복할때 최댓값3500을 넘는지 자동화하려면 while문에서 break쓰면됨 MAX=3500; while(500*a<MAX){ while(b어쩌고) ... b++; a++; } - dc App
이렇게하거나 while(1) { a++; if(500*a>MAX)break; } - dc App
그렇게 해보겠습니다. 감사합니다!
제가 생각한건 후자의 방법인거같아요 고마워용
대충 방향은 반복문이 몇번돌아갈지 정해져있다 -->for루프로 돌리고 언제끝날지 모르겠다 -->while문에서 if(조건)break; 활용 - dc App
선생님 혹시 마지막으로 여쭤보자면, 제가 처음에 올린 코드는 어떤 부분에서 잘못된 것인지 간략하게 알려주실수 있으십니까..( _ _ )
답이 틀리다고는 안함 3500이후로는 의미없이 for문이 돌아가서 비효율적이라는거지 - dc App
근데 컴파일이 안되서 ㅠㅠ 그냥 시간이 오지게 많이 걸리는거인가요?
아 반복문 조건이 a<=3500이 아니라 r이었네 기다려봐 - dc App
네 형님 감사합니다 ...
a=1 b=1이면 1200이니깐 남은건 2300인데 c=5일때 r=2000이니 건너뛰고 c=6일때 r=2400이니 반복문 조건에 따라 모든 루프를 빠져나옴 이 코드대로면 최초의 r이 3500을 넘는 순간 모든 루프는 빠져나가서 아무것도 출력되지않름 - dc App
와 감사합니다 그러네요 어떻게 고칠지 알겠습니다.
되게 귀여운 코드다 ㅎㅎㅎㅎㅎ
그..혹시 하나 여쭤봐도 될까요
제가 아는 거면 답변 가능 ㅇ
답글 다신걸 지금봤네요 ㅠㅠ 그 저 위에있는 코드 for3중으로 쓴거가, r>3500되는순간 모든 루프를 나가버리는게 문제라고 해서, printf뒤의 중괄호에 for문 하나 끝나면, 그 직후에 각각c=1, b=1로 초기화해주는걸 넣었거든요..
말이 복잡하긴한데, 어쨋든 그렇게 해도 컴파일이 안되네요. 코드를 큰 틀에서 저렇게 쓰고, 세부적인 부분만 고치고 싶은데, 어떻게 해야 코드가 굴러갈지 모르겠어요 ㅠㅠ 별것도 아닌데 하루종일 해결이 안되네요