※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 17211번 문제인 좋은 날 싫은 날이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/17211 

 

17211번: 좋은 날 싫은 날

지은이가 건국한 나라인 유애나에 살고 있는 재현이는 너무 단순한 나머지 매일이 기분이 좋은 날, 기분이 싫은 날 두가지로 나누어진다. 어느 날 지은이는 재현이에 대한 놀라운 사실을 발

www.acmicpc.net

N일 후에 기분이 좋을 확률은 (N-1일 후에 기분이 좋을 확률) * (기분이 좋은 날 다음 날에 기분이 좋을 확률)과 (N-1일 후에 기분이 싫을 확률) * (기분이 싫은 날 다음 날에 기분이 좋을 확률)과 같이 구할 수 있음을 관찰하자. 또한 이와 비슷하게 N일 후에 기분이 싫을 확률을 계산해낼 수 있다.

 

위의 점화관계와 반복문을 이용해 구하고자 하는 값을 구해 문제를 해결하자. long double 자료형을 이용하면 문제에서 요구하는 정밀도로 충분히 계산할 수 있으므로 참고하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long double ld;

int N, E;
ld A, B, C, D;

ld GOOD, BAD;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> E >> A >> B >> C >> D;
	if (E == 0) GOOD = 1;
	else BAD = 1;

	while (N--) {
		ld good = GOOD * A + BAD * C;
		ld bad = GOOD * B + BAD * D;
		GOOD = good, BAD = bad;
	}

	cout << fixed;
	cout.precision(0);

	cout << GOOD * 1000 << ' ' << BAD * 1000;
}
728x90

+ Recent posts