PS

BOJ 15886 : 내 선물을 받아줘 2

lickelon 2024. 12. 24. 21:57
  • 문제 링크 : boj.kr/15886
  • 난이도 : S3
  • 태그 : 문자열

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

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

    int n;
    cin >> n;
    string s;
    cin >> s;
    int ans = 0;
    for(int i = 1; i < n; i++) {
        if(s[i] == 'W' && s[i-1] == 'E') ans++;
    }
    cout << ans;

    return 0;
}

풀이

여러 개의 E와 여러 개의 W는 각각 하나의 E와 W로 나타낼 수 있다.

지도 밖으로 나가는 입력이 주어지지 않으므로 압축된 문자열은 "EW"가 K번 반복된다.

EW는 둘을 왕복하므로 둘 중 아무 곳에나 선물을 놓아도 상관이 없다.

또한 밖으로 나가지도 않기에 EW의 수만큼 선물을 놓아야 한다.

728x90

'PS' 카테고리의 다른 글

BOJ 31563 : 수열 회전과 쿼리  (0) 2024.12.26
BOJ 8975 : PJESMA  (1) 2024.12.25
BOJ 32748 : f(A + B)  (0) 2024.12.23
BOJ 15903 : 카드 합체 놀이  (0) 2024.12.22
BOJ 32749 : 타노수  (0) 2024.12.21