๐Ÿ•๏ธ ICPC Sinchon

[C/C++] ๋ฐฑ์ค€ 10804๋ฒˆ : ์นด๋“œ ์—ญ๋ฐฐ์น˜

์„ ๋‹ฌ 2021. 7. 13. 17:32
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/10804

 

10804๋ฒˆ: ์นด๋“œ ์—ญ๋ฐฐ์น˜

1๋ถ€ํ„ฐ 20๊นŒ์ง€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋†“์ธ ์นด๋“œ๋“ค์— ๋Œ€ํ•ด, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ 10๊ฐœ์˜ ๊ตฌ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋’ค์ง‘๋Š” ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ ๋งˆ์ง€๋ง‰ ์นด๋“œ๋“ค์˜ ๋ฐฐ์น˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค. 

www.acmicpc.net

๋ฌธ์ œ

1๋ถ€ํ„ฐ 20๊นŒ์ง€ ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜์”ฉ ์“ฐ์ธ 20์žฅ์˜ ์นด๋“œ๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ•œ ์ค„๋กœ ๋†“์—ฌ์žˆ๋‹ค. ๊ฐ ์นด๋“œ์˜ ์œ„์น˜๋Š” ์นด๋“œ ์œ„์— ์ ํžŒ ์ˆซ์ž์™€ ๊ฐ™์ด 1๋ถ€ํ„ฐ 20๊นŒ์ง€๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

 1234567891011121314151617181920์นด๋“œ

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์นด๋“œ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค: ๊ตฌ๊ฐ„ [a, b] (๋‹จ, 1 ≤ a ≤ b ≤ 20)๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์œ„์น˜ a๋ถ€ํ„ฐ ์œ„์น˜ b๊นŒ์ง€์˜ ์นด๋“œ๋ฅผ ํ˜„์žฌ์˜ ์—ญ์ˆœ์œผ๋กœ ๋†“๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ ์นด๋“œ๊ฐ€ ๋†“์ธ ์ˆœ์„œ๊ฐ€ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๊ณ  ๊ตฌ๊ฐ„์ด [5, 10]์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด, ์œ„์น˜ 5๋ถ€ํ„ฐ ์œ„์น˜ 10๊นŒ์ง€์˜ ์นด๋“œ 5, 6, 7, 8, 9, 10์„ ์—ญ์ˆœ์œผ๋กœ ํ•˜์—ฌ 10, 9, 8, 7, 6, 5๋กœ ๋†“๋Š”๋‹ค. ์ด์ œ ์ „์ฒด ์นด๋“œ๊ฐ€ ๋†“์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

 1234567891011121314151617181920์นด๋“œ

1 2 3 4 10 9 8 7 6 5 11 12 13 14 15 16 17 18 19 20

์ด ์ƒํƒœ์—์„œ ๊ตฌ๊ฐ„ [9, 13]์ด ๋‹ค์‹œ ์ฃผ์–ด์ง„๋‹ค๋ฉด, ์œ„์น˜ 9๋ถ€ํ„ฐ ์œ„์น˜ 13๊นŒ์ง€์˜ ์นด๋“œ 6, 5, 11, 12, 13์„ ์—ญ์ˆœ์œผ๋กœ ํ•˜์—ฌ 13, 12, 11, 5, 6์œผ๋กœ ๋†“๋Š”๋‹ค. ์ด์ œ ์ „์ฒด ์นด๋“œ๊ฐ€ ๋†“์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

 1234567891011121314151617181920์นด๋“œ

1 2 3 4 10 9 8 7 13 12 11 5 6 14 15 16 17 18 19 20

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ•œ ์ค„๋กœ ๋†“์—ฌ์žˆ๋Š” 20์žฅ์˜ ์นด๋“œ์— ๋Œ€ํ•ด 10๊ฐœ์˜ ๊ตฌ๊ฐ„์ด ์ฃผ์–ด์ง€๋ฉด, ์ฃผ์–ด์ง„ ๊ตฌ๊ฐ„์˜ ์ˆœ์„œ๋Œ€๋กœ ์œ„์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ์ž‘์—…์„ ์—ฐ์†ํ•ด์„œ ์ฒ˜๋ฆฌํ•œ ๋’ค ๋งˆ์ง€๋ง‰ ์นด๋“œ๋“ค์˜ ๋ฐฐ์น˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ด 10๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ 10๊ฐœ์˜ ๊ตฌ๊ฐ„์ด ์ฃผ์–ด์ง„๋‹ค. i๋ฒˆ์งธ ์ค„์—๋Š” i๋ฒˆ์งธ ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘ ์œ„์น˜ ai์™€ ๋ ์œ„์น˜ bi๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ ๋‘ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” 1 ≤ ai ≤ bi ≤ 20์ด๋‹ค.

์ถœ๋ ฅ

1๋ถ€ํ„ฐ 20๊นŒ์ง€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋†“์ธ ์นด๋“œ๋“ค์— ๋Œ€ํ•ด, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ 10๊ฐœ์˜ ๊ตฌ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋’ค์ง‘๋Š” ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ ๋งˆ์ง€๋ง‰ ์นด๋“œ๋“ค์˜ ๋ฐฐ์น˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค. 

 

ํ’€์ด

1) ๋ฐฐ์—ด ์ด์šฉํ•˜๊ธฐ

#include <iostream>
#include <algorithm>

using namespace std;

int main(void) {

  int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

  int begin,end;
  for(int i=0; i<10; i++){
    std::cin >> begin >> end;
    std::reverse(&arr[begin-1],&arr[end]);
  } 

  for(int i=0; i<20; i++){
    std:: cout << arr[i] << " ";
  }

 

2) ๋ฒกํ„ฐ ์ด์šฉํ•˜๊ธฐ

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(void) {
  ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  
  vector <int> v(20);
  for(int i=0; i<20; i++){
    v[i] = i+1;
  }

  int a,b;
  for(int i=0; i<10; i++){
    cin >> a >> b;
    reverse(v.begin()+a-1,v.begin()+b);
  } 

  for(int i=0; i<20; i++){
    cout << v[i] << " ";
  }

  return 0;
  
}

 

TIL

C++์—์„œ ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

 

๋ฐ˜์‘ํ˜•