컴굥일지

[BOJ/백준 10804][C++] 카드 역배치 본문

알고리즘/코테 문제

[BOJ/백준 10804][C++] 카드 역배치

gyong 2021. 7. 11. 21:24
반응형

백준 10804 카드 역배치

 

문제 링크

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

 

10804번: 카드 역배치

1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. 

www.acmicpc.net

 

문제 내용

1~20까지의 카드 배열을 선언하고, 10개의 구간을 입력받는다. 입력받은 구간을 뒤집는 작업을 하고, 마지막 결과를 출력한다.
1. 맨 처음에는 swap() 함수를 사용하는 방법을 생각했었다.  그렇기 때문에, 입력된 구간마다 (second-first)/2의 횟수만큼 반복문을 돌려주는 방식의 코드를 작성했다. (주석 부분)2. 좀 더 짧게 작성하는 방법으로 reverse() 함수를 사용했다. 

 

코드

#include <iostream>
#include <algorithm> //reverse() 사용을 위해
using namespace std;

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

	int arr[21];
	for (int i = 1; i < 21; i++) arr[i] = i ;	//1~20까지의 숫자

	//숫자를 입력받아 순서 뒤집기
	for (int i = 0; i < 10; i++) {
		int first, second;
		cin >> first >> second;

		/*  
        		int num = (second - first)/ 2;
			for (int j = 0; j <= num; j++) {	//1번 방법 - 반복문에서 swap()사용
			swap(arr[first], arr[second]);
			first++; second--;
		}*/

		reverse(arr + first, arr + second + 1);		// 2번 방법 - reverse() 사용
		
	}

	//결과 출력
	for (int i = 1; i < 21; i++) {
		cout << arr[i] << ' ';
	}
	cout << '\n';
	return 0;
}
반응형

'알고리즘 > 코테 문제' 카테고리의 다른 글

[BOJ/백준 2993][C++] 세 부분  (0) 2021.07.11
[BOJ/백준 1008][C++] A/B  (0) 2021.07.11
[BOJ/백준 1547][C++] 공  (0) 2021.07.11
[BOJ/백준 1158][C++] 요세푸스 문제  (0) 2021.07.11
[BOJ/백준 15552][C++] 빠른 A+B  (0) 2021.07.11
Comments