안 쓰던 블로그

백준 15721 번데기 본문

알고리즘/알고리즘 문제 풀이

백준 15721 번데기

proqk 2020. 9. 24. 02:40
반응형

www.acmicpc.net/problem/15721

 

1)

뻔 – 데기 – 뻔 – 데기 – 뻔 – 뻔 – 데기 – 데기
뻔 – 데기 – 뻔 - 데기 – 뻔 – 뻔 – 뻔 – 데기 – 데기 – 데기
뻔 – 데기 – 뻔 - 데기 – 뻔 – 뻔 – 뻔 - 뻔 – 데기 – 데기 – 데기 - 데기

...

한 바퀴 돌 때마다 이런 식으로 뻔과 데기가 늘어난다

 

2)

만약 사람이 7명이고 16번째 뻔을 말한 사람을 구하려면 입력은 7 16 0이고

 

뻔 데기 뻔 데기 뻔 뻔 데기
데기 뻔 데기 뻔 데기 뻔 뻔
뻔 데기 데기 데기 뻔 데기 뻔
데기 뻔 뻔 뻔 뻔 데기 데기
데기 데기 

 

이니까 2번째 사람이 16번째 뻔을 말했으니 2를 출력한다

사람은 0부터 센다

 

3)

사람이 1명일 수도 있다

1명이면 혼자서 뻔 데기를 다 부르니까 무조건 0이 나온다

 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	int a, t, want, n = 0, cnt = 0, res = 0;
	cin >> a >> t >> want;
	while (true) {
		n++; //라운드
		vector<int> what{ 0,1,0,1 }; //0뻔 1데기
		for (int i = 1; i <= n + 1; i++) what.push_back(0); //뻔 추가
		for (int i = 1; i <= n + 1; i++) what.push_back(1); //데기 추가
		for (int i = 0; i < what.size(); i++) {
			if (what[i] == want) cnt++; //등장 횟수 카운트
			if (cnt == t) {
				cout << res;
				return 0;
			}
			res++; //몇번째 사람인지 센다
			res %= a;
		}
		what.clear();
	}
}
반응형
Comments