문제 링크입니다: https://www.acmicpc.net/problem/15721
중앙대 CodeRace 2018 문제였습니다.
처음 번은 뻔과 데기를 번갈아가면서 외치고 이후에는 cnt번 뻔을 외친 후 cnt번 데기를 외치는 형식이므로 반복문을 잘 적용하면 풀 수 있는 문제였습니다.
#include <iostream>
using namespace std;
int A, T, chant;
int Tth(void)
{
int bbun = 0;
int degi = 0;
int cnt = 2; //1회차에 두번 반복
while (1)
{
//처음 2번은 번갈아가며
for (int i = 0; i < 4; i++)
{
if (i % 2 == 0)
bbun++;
else
degi++;
if (bbun == T && chant == 0)
return (bbun + degi - 1) % A;
if (degi == T && chant == 1)
return (bbun + degi - 1) % A;
}
//그 다음에는 cnt번 뻔 이후 cnt번 데기
for (int i = 0; i < cnt; i++)
{
bbun++;
if (bbun == T && chant == 0)
return (bbun + degi - 1) % A;
}
for (int i = 0; i < cnt; i++)
{
degi++;
if (degi == T && chant == 1)
return (bbun + degi - 1) % A;
}
cnt++; //회차 증가
}
}
int main(void)
{
cin >> A >> T >> chant;
cout << Tth() << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 15723번 n단 논법 (0) | 2018.06.17 |
---|---|
백준 15722번 빙글빙글 스네일 (0) | 2018.06.17 |
백준 1256번 사전 (0) | 2018.06.17 |
백준 1182번 부분집합의 합 (0) | 2018.06.16 |
백준 2309번 일곱난쟁이 (2) | 2018.06.16 |