- 문제
- 풀이
1. 라이브러리에 내장된 reverse 함수를 사용하는 풀이
#include <iostream>
using namespace std;
int main()
{
int n = 0, m = 0, start = 0, end = 0;
int bucket[101] = { 0 };
cin >> n >> m;
for (int k = 0; k < 101; k++)
{
bucket[k] = k;
}
for (int i = 0; i < m; i++)
{
cin >> start >> end;
reverse(bucket + start, bucket + end + 1);
}
for (int i = 1; i <= n; i++)
{
cout << bucket[i] << ' ';
}
return 0;
}
풀이 2. i는 증가하고 j는 감소하면서 서로 교차하는 인덱스의 규칙에 swap을 사용하는 방법
#include <iostream>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
int bucket[100] = { 0 };
for (int a = 1; a <= N; a++)
{
bucket[a] = a;
}
for (int a = 1; a <= M; a++)
{
int i, j;
cin >> i >> j;
for (i; i < j; i++ & j--)
{
int temp = bucket[i];
bucket[i] = bucket[j];
bucket[j] = temp;
}
}
for (int a = 1; a <= N; a++)
{
cout << bucket[a] << " ";
}
}
풀이 3. 가운데 값은 제외하고 입력받은 a, b의 인덱스를 서로 뒤집어주는 방법
while(m--)
{
cin >> a >> b;
if(a != b)
{
for(int i=0; i <= (b-a)/2; i++)
{
swap(bucket[a+i], bucket[b-i]);
}
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[백준/10798번/C++] 세로읽기 (0) | 2024.07.27 |
---|---|
[백준/2941번/C++] 크로아티아 알파벳 (0) | 2024.07.26 |
[백준/2480번/C++] 주사위 세개 (0) | 2024.07.23 |
[백준/2588번/C++] 곱셈 (0) | 2024.07.21 |
☆ [백준/10847번/C++] 큐 (0) | 2024.07.16 |