알고리즘/BOJ

백준 14649번 문홍안

꾸준함. 2018. 8. 10. 02:57

문제 링크입니다: 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


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형