문제 링크입니다: https://www.acmicpc.net/problem/14649
단순 구현 문제였습니다.
알고리즘은 아래와 같습니다.
1. 'R'이 입력되면 주어진 돌 기준으로 오른쪽에 있는 돌들은 모두 한 번씩 밟습니다.
2. 'L'이 입력되면 주어진 돌 기준으로 왼쪽에 있는 돌들은 모두 한 번씩 밟습니다.
3. 마지막에 각 돌들의 색깔을 파악해서 계산해주면 됩니다.
#include <iostream>
using namespace std;
const int MAX = 100 + 1;
int P, N;
int stone[MAX]; //0: blue, 1: red, 2: green
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0); //cin 실행속도 향상
cin >> P >> N;
for (int i = 0; i < N; i++)
{
int pos;
char direction;
cin >> pos >> direction;
//pos 기준 왼쪽 다 밟음
if (direction == 'L')
for (int i = 1; i < pos; i++)
stone[i] = (stone[i] + 1) % 3;
//pos 기준 오른쪽 다 밟음
else
for (int i = pos + 1; i < MAX; i++)
stone[i] = (stone[i] + 1) % 3;
}
double blue = 0, red = 0, green = 0;
for (int i = 1; i < MAX; i++)
switch (stone[i])
{
case 0:
blue++;
break;
case 1:
red++;
break;
case 2:
green++;
break;
}
blue /= 100;
red /= 100;
green /= 100;
//cout << blue << " " << red << " " << green << "\n";
printf("%.2f\n%.2f\n%.2f\n", double(P * blue), double(P * red), double(P * green));
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 6591번 이항 쇼다운 (2) | 2018.08.10 |
---|---|
백준 15501번 부당한 퍼즐 (0) | 2018.08.10 |
백준 14648번 쿼리 맛보기 (0) | 2018.08.10 |
백준 14647번 준오는 조류혐오야!! (0) | 2018.08.10 |
백준 14646번 욱제는 결정장애야!! (0) | 2018.08.10 |