컴굥일지
[BOJ/백준 10804][C++] 카드 역배치 본문
반응형
백준 10804 카드 역배치
문제 링크
https://www.acmicpc.net/problem/10804
문제 내용
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