PS

BOJ 15887 : 욱제는 결벽증이야!!

lickelon 2025. 1. 18. 17:50
  • 문제 링크 : boj.kr/15887
  • 난이도 : S5
  • 태그 : 구현

코드

#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;
    vector<int> arr(n);
    for(auto &e : arr) cin >> e;

    vector<pii> ans;
    for(int i = 0; i < n; i++) {
        if(arr[i] == i+1) continue;
        int idx = i;
        while(arr[idx] != i+1) idx++;
        reverse(&arr[i], &arr[idx]+1);
        ans.emplace_back(i+1, idx+1);
    }

    cout << ans.size() << "\n";
    for(auto e : ans) cout <<e.first << " " << e.second << "\n";

    return 0;
}

풀이

모든 i번째 카드에 정수 i가 적히도록 하는 것은 가능하다.

첫 번째 자리부터 정수 i가 오도록 reverse 연산을 수행하면 된다.

728x90

'PS' 카테고리의 다른 글

BOJ 29160 : 나의 FIFA 팀 가치는?  (0) 2025.01.20
BOJ 14940 : 쉬운 최단거리  (0) 2025.01.19
BOJ 1059 : 좋은 구간  (0) 2025.01.17
BOJ 11665 : 직육면체 교집합  (0) 2025.01.16
BOJ 2346 : 풍선 터뜨리기  (0) 2025.01.15