C언어) 제 코드 수정해 주시면 감사하겠습니다.
글쓴이: dvwn / 작성시간: 토, 2020/05/23 - 6:12오전
안녕하세요. 문제를 푸는 도중에 제 코드에 어느 부분이 틀렸길래 답이 안나오는지 몰라서 질문드립니다.
문제)
사슴과 학이 있다. 모두 합치면 35마리이고 다리의 합은 94개이다. 이 경우 사슴과 학이 각 몇 마리인지를 구하는 프로그램을 작성하라.
작성코드)
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int x, y;
int sum1, sum2;
x = 0;
y = 0;
sum1 = 35;
sum2 = 94;
while (sum1)
{
while (sum2)
{
sum2 = ((4 * x) + (2 * y));
x++, y++;
}
sum1 = x + y;
x++; y++;
}
printf("사슴과 학은 각 %d 마리, %d마리입니다.", x, y);
return 0;
}
Forums:
수정 안 해 주고 힌트는 드림.
1. KLDP 에서 소스코드에는 code 태그 써야 제대로 보입니다.
2. 아래 코드를 마지막에만 넣지 말고 소스 중간 중간에 넣어보세요.
세벌 https://sebuls.blogspot.kr/
질문 드려요.
#define _CRT_SECURE_NO_WARNINGS는 다른 scanf 문제 푸느라 필요해, 지우지 않아서 넣었습니다.
사실 제가 답 보다도 궁금한건...제 풀이 논리랍니다.
우선,
while (sum2)에서 x++, y++;는 곧 x,y가 1씩 커져 sum2 = ((4 * x) + (2 * y)); =94라는 조건을 만족하는 x y 값을 찾을 수 있을거라 생각해서 넣었습니다.
그렇게, while (sum2)에서 마찬가지로 x++, y++;는 곧 x,y가 1씩 커져 sum1 = x + y; = 35를 만족하는 값이 있을것이고...두 while함수를 만족하는 공통된 x 와 y 가 밑에있는 printf("사슴과 학은 각 %d 마리, %d마리입니다.", x, y); 에 출력될거라고 생각해서 작성한건데요... 이러한 논리에서 제가 착각한 부분이 어디인가요?
그래서 소스 중간 중간에
그래서 소스 중간 중간에
님께서 생각하는 대로 x 값, y 값이 움직이는지 살펴보셔요.
답을 그냥 알려드리면 스스로 공부할 기회를 빼앗아버리는 거라서...
세벌 https://sebuls.blogspot.kr/
sum1, sum2는 계속 증가하게 되는데 while
sum1, sum2는 계속 증가하게 되는데 while(sum1) while(sum2)에서 탈출할 수 있는 조건이 없습니다.
아마 무한루프 돌지 않나요? 이문제를 수치해석적으로 푸는게 아니면 2차 다항식으로 푸는게 맞겠죠.
2차 다항식까지는 아니고...
2차 다항식까지는 아니고 1차 단항식으로 풀 수 있겠죠.
세벌 https://sebuls.blogspot.kr/
두번째 힌트
사슴이 x 마리면 학은 sum1 - x 마리죠. 이걸 활용하면 변수 y는 필요 없겠네요.
y 변수를 쓴다면
세벌 https://sebuls.blogspot.kr/
...
뭐, 입력이 고정되어 있고 별로 크지 않다면, 이런 최적화도 가능하다고 볼 수 있지요. :)
이거 쉬운 문제 아니더이다... 산법을 겨루는 게임 같았어요;;;
[우분투 18.04 파여폭스 나비에서 적었어요~]
--
^고맙습니다 감사합니다_^))//
불합격입니다.
질문에서 C언어라 했는데, python으로 답을 하시면...
코드를 보아하니 쉬운 문제를 일부러 어렵게 풀어 놓으신 거 같기도 하고...
다음에는 또 다른 언어의 답이 나올 거 같네요 :)
세벌 https://sebuls.blogspot.kr/
^^^
중학교때 배운 연립방정식을 세벌님은 기억하고 있어요.
그래서 세벌님은 쉽다라는 표현을 쓴거지요.
하지만 콤푸타는 연립방정식이 무엇인지 모릅니다.
저도 중학교때 배운 연립방정식을 잊어먹었어요.
태어나서 한번도 연립방정식을 풀지 못한 것처럼 그런마음으로 파이썬 코드로 옮겨봤어요~
그래서 불합격을 받았어도 기쁘네요^^^
감사합니다^^^
[우분투 18.04 파여폭스 나비에서 적었어요~]
불합격 준 까닭 그거 아닌데요.
질문한 사람은 C언어를 물어봤는데 답을 Python으로 하셔서 그런 건데요...
KLPD 분위기가 워낙 다양한 언어에 대한 답이 나오긴 하지만요. :)
여기에 C 언어로 답을 알려주면 스포일러 되겠죠?
세벌 https://sebuls.blogspot.kr/
감사합니다 세벌님^^^
덕분에 C언어 연습 했네요~^^^
https://gitlab.com/soyeomul/test/-/commit/1ab41efa35dd4ddeadda2df5a56027e0ae7febb9
[우분투 18.04 파여폭스 나비에서 적었어요~]
저도 하나 만들어봤어요.
주의. 이 문제를 안 풀고, 아래 링크를 복사 붙이기 해서 그대로 낸다면 점수 잘 나온다는 보장 못 합니다.
이미 문제를 푼 사람이 아래 링크 보고 이런 방법도 있구나 하면 상관 없지만요.
http://sebul.sarang.net/q2a/?qa=275/c%EC%96%B8%EC%96%B4-%EC%A7%88%EB%AC%B8-%EC%82%AC%EC%8A%B4-%ED%95%99-%EB%AA%87-%EB%A7%88%EB%A6%AC
세벌 https://sebuls.blogspot.kr/
한줄풀이
inv([1 1 ; 2 4]) * [35 ; 94];
한줄 권법 감사합니다^^^
한줄 권법 감사합니다^^^
파이썬3 드림
[우분투 18.04 파여폭스 나비에서 적었어요~]
음? 이건 무슨 언어인가요?
음? 이건 무슨 언어인가요?
https://www.mathworks.com/help/matlab/ref/inv.html
인가요?
세벌 https://sebuls.blogspot.kr/
주어진 문제를 매트릭스로 표현하고,
주어진 문제를 매트릭스로 표현하고,
매트릭스 연산으로 해를 구한다...
결국 매트릭스로 표현된 연립방정식을 푸는거지요..
그게 그말??
그런데... 이 글에서는 연립방정식의 해를 구하는 과정을 서술해야 할거 같습니다.
풀었습니다.
아침에 자다가 다시 문제를 풀었는데요... if문으로 풀었습니다.
완전 초보라 이제 차근차근 배워가는 중인데요, 위에서 답변 주신 put이나 inv이런건 모르겠네요ㅋㅋㅋ
다들 답변 달아주셔서 감사드립니다.
댓글 달기