한다 공부
[C++] 백준 알고리즘 19363번 요요 시뮬레이션 본문
눈물이.. 나는군..^^
우선 자신의 언어에서 -5/2가 -3인지 확인해보자
c++은 -2가 나온다
그럼 주구장창 해도 틀렸습니다 나옴,,
힌트 아랫부분에 이 내용이 쓰여있어서 진짜 몰랐다,,
결국 구글링해서...
버림은 cmath include하고 floor쓰면된다는 걸 알게 된..
그리고 floor안에 double이나 float로 형변환 안 해주면 틀린다
문제가 좀 말이 많다..
요요라길래 어릴 때 가지고 놀던 그 요요 장난감인줄 알았다
그냥 입력하란거 입력받고
출력하란거 출력하고
계산부분 구현하면 답이,, 나온다


다이어트 전 일일 에너지 섭취량과 일일 기초 대사량을 l0 라는 변수에 같이 입력 받아서 좀 헷갈렸는데
기초 대사량은 변하기 때문에 새로운 변수 만들어 줘야함
난 change_b로 담았다
아 그리고 당연히 요요라길래...
다이어트 전 몸무게보다 다이어트 후 몸무게가 많이 나가면 요요인줄 알았는데
그냥 살이 1g이라도 찌면 요요였던 것임~
#include<iostream>
#include<cmath> //floor이용, 버림
using namespace std;
struct person {
int w0; //다이어트 전 체중
int l0; //다이어트 전 일일 에너지 섭취량 및 일일 기초 대사량
int t; //기초 대사량 변화 역치
int d; //다이어트 기간
int l; //다이어트 기간 일일 에너지 섭취량
int a; //다이어트 기간 일일 활동 대사량
};
int main() {
person de;//데시
cin >> de.w0 >> de.l0 >> de.t;
cin >> de.d >> de.l >> de.a;
//일일 기초 대사량의 변화를 고려하지 않았을 때의
//다이어트 후 예상 체중(no_change_w)과 일일 기초 대사량을 출력
int no_change_w = de.w0 + (de.l - de.l0 - de.a) * de.d;
//데시 사망
if (no_change_w <= 0)
cout << "Danger Diet" << '\n';
else
cout << no_change_w << ' ' << de.l0 << '\n';
//-----------------------------------------------
//일일 기초 대사량의 변화를 고려했을 때의
//다이어트 후 예상 체중과 일일 기초 대사량을 출력
int change_w = de.w0; //체중
int change_b = de.l0; //기초 대사량
int day = de.d;
while (day--) {
//체중 변화
change_w = change_w + (de.l - change_b - de.a);
if (abs(de.l - change_b - de.a) > de.t) {
//-5/2 = -2 ....
//-3이 나와야지 정답
//floor이용해서 버림
change_b += floor((float)(de.l - change_b - de.a) / 2);
}
}
//데시 사망
if (change_b <= 0 || change_w <= 0)
cout << "Danger Diet" << '\n';
else {
cout << change_w << ' ' << change_b << ' ';
//요요 조건
if ((de.l0 - change_b - 0) > 0)
cout << "YOYO" << '\n';
else
cout << "NO" << '\n';
}
}
출력 결과 잘 나옴...
글자에 속아 문제를 잊지 말자
힌트도 꼼꼼히 보자
'Algorithm > 문제풀이' 카테고리의 다른 글
[C++] 백준 알고리즘 14425번 문자열 집합 (0) | 2021.09.12 |
---|---|
[C++] 백준 알고리즘 1764번 듣보잡 (0) | 2021.09.12 |
[C++] 백준 알고리즘 10757번 큰 수 A+B (0) | 2021.09.12 |
[C++] 백준 알고리즘 11651번 좌표 정렬하기 2 (0) | 2021.09.09 |
[C++] 백준 알고리즘 1431번 시리얼 번호 (0) | 2021.09.09 |