๐Ÿ’  Cpp/[BOJ] ๋‹จ๊ณ„๋ณ„๋กœ ํ’€์–ด๋ณด๊ธฐ

[BOJ][C++] ๋ฐฑ์ค€ 10811๋ฒˆ: ๋ฐ”๊ตฌ๋‹ˆ ๋’ค์ง‘๊ธฐ (Bronze II)

์„ ๋‹ฌ 2024. 12. 20. 20:45
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

๋„ํ˜„์ด๋Š” ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์ด N๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ๋ฐ”๊ตฌ๋‹ˆ์—๋Š” 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ ํ˜€์ ธ ์žˆ๋‹ค. ๋ฐ”๊ตฌ๋‹ˆ๋Š” ์ผ๋ ฌ๋กœ ๋†“์—ฌ์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์™ผ์ชฝ ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ 1๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ, ๊ทธ ๋‹ค์Œ ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ 2๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ, ..., ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ N๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋„ํ˜„์ด๋Š” ์•ž์œผ๋กœ M๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ๋„ํ˜„์ด๋Š” ํ•œ ๋ฒˆ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ, ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ค ๋ฒ”์œ„๋ฅผ ์ •ํ•˜๊ณ , ๊ทธ ๋ฒ”์œ„์— ๋“ค์–ด์žˆ๋Š” ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€์ง€ ์ฃผ์–ด์กŒ์„ ๋•Œ, M๋ฒˆ ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“  ๋‹ค์Œ, ๋ฐ”๊ตฌ๋‹ˆ์— ์ ํ˜€์žˆ๋Š” ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์žฅ ์™ผ์ชฝ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N (1 ≤ N ≤ 100)๊ณผ M (1 ≤ M ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฐฉ๋ฒ•์€ i j๋กœ ๋‚˜ํƒ€๋‚ด๊ณ , ์™ผ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ j๋ฒˆ์งธ ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค. (1 ≤ i ≤ j ≤ N)
๋„ํ˜„์ด๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๊ตฌ๋‹ˆ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พผ๋‹ค.

์ถœ๋ ฅ

๋ชจ๋“  ์ˆœ์„œ๋ฅผ ๋ฐ”๊พผ ๋‹ค์Œ์—, ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ฐ”๊ตฌ๋‹ˆ๋ถ€ํ„ฐ ๋ฐ”๊ตฌ๋‹ˆ์— ์ ํ˜€์žˆ๋Š” ์ˆœ์„œ๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

// ํ’€์ด : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>

using namespace std;

vector<int> solution(vector<int>basket, vector<int>&input1, vector<int>&input2) {
    int m = input1.size();
    for(int k=0; k<m; k++) {
        int i = input1[k];
        int j = input2[k];
        
        while(i<j) {
            int tmp = basket[i];
            basket[i] = basket[j];
            basket[j] = tmp;
            
            i++;
            j--;
        }
    }
    
    return basket;
}

int main() {
    ios_base::sync_with_stdio(false);
	cout.tie(NULL);
	cin.tie(NULL);
	
	// input
	int n, m;
	cin >> n >> m;
	vector<int>basket(n+1);
	for(int i=1; i<=n; i++) {
	    basket[i] = i;
	}
	vector<int>input1(m);
	vector<int>input2(m);
	for(int i=0; i<m; i++) {
	    cin >> input1[i] >> input2[i];
	}
	
    // solution
    vector<int> answer = solution(basket, input1, input2);


    // output
    for(int i=1; i<=n; i++) {
        cout << answer[i] << " ";
    }

    
    return 0;
}
๋ฐ˜์‘ํ˜•