https://www.acmicpc.net/problem/14649
단순 구현 문제입니다.
N이 100이기 때문에 시간복잡도 N^2으로 해결할 수 있습니다.
그냥 한번씩 다 밟아보면서 카운트하고
mod를 이용하여 어떤 색인지 판별하면 되겠습니다.
코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <string.h> using namespace std; #define ll long long #define MOD (ll)1e15 #define MAX_SIZE (int)1e5 #define mp make_pair #define INF 987654321 #define pii pair<int, int> //ios::sync_with_stdio(false); cin.tie(0); int pos[100]; char direct[100]; int cnt[101]; int main() { ios::sync_with_stdio(false); cin.tie(0); int p; cin >> p; int n; cin >> n; for (int i = 0; i < n; i++) { cin >> pos[i] >> direct[i]; } //N^2의 복잡도로 돌 for (int i = 0; i < n; i++) { int d = (direct[i] == 'L' ? -1 : 1); for (int j = pos[i] + d; j > 0 && j <= 100; j += d) { cnt[j]++; } } int b, r, g; b = r = g = 0; //나머지 연산을 이용하여 개수 체킹 for (int i = 1; i <= 100; i++) { int mod = cnt[i] % 3; if (mod == 0) b++; else if (mod == 1) r++; else g++; } //2자리로 고정하기 cout << fixed; cout.precision(2); cout << ((double)b / 100) * p << '\n'; cout << ((double)r / 100) * p << '\n'; cout << ((double)g / 100) * p << '\n'; return 0; } | cs |
'알고리즘 > 구현' 카테고리의 다른 글
[14488] 준오는 급식충이야! (0) | 2017.07.29 |
---|---|
[1913] 달팽이 (0) | 2017.07.27 |
[10986] 나머지 합 (0) | 2017.07.24 |
[3474] 교수가 된 현우 (0) | 2017.07.13 |
[5527] 전구 장식 (0) | 2017.07.05 |