본문 바로가기
알고리즘/백준 문제 풀이

[BOJ/백준] 10811번 바구니 뒤집기 - [c/c++] 풀이

by 미니상미니 2023. 4. 26.
반응형

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

 

10811번: 바구니 뒤집기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2

www.acmicpc.net

 

 

 

 


  • 문제


해설

1번부터 n번까지 번호가 순서대로 담긴 바구니가 있다

m개의 줄에 걸쳐 a b가 입력된다. a번부터 b번까지 바구니의 순서를 뒤집은 후

1번부터 n번까지 바구니에에 담긴 번호를 출력하면 되는 문제이다.

 

코드

c

#include <stdio.h>

void swap(int *a, int *b) {
  int tmp = *a;
  *a = *b;
  *b = tmp;
}

int main() {

  int n, m, a, b;
	int arr[100];
	scanf("%d %d", &n, &m);

	for(int i = 1; i <= n; i++)
		arr[i] = i;

	while(m--) {
		scanf("%d %d", &a, &b);

		for(int i = 0; i <= (b - a) / 2; i++) {
			swap(&arr[a + i], &arr[b - i]);
		}
	}

	for(int i = 1; i <= n; i++) {
		printf("%d ", arr[i]);
	}

  return 0;
}

 

c++

#include <iostream>

using namespace std;

int main() {

	int n, m, a, b;
	int arr[100];
	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		arr[i] = i;

	while(m--) {
		cin >> a >> b;

		for(int i = 0; i <= (b - a) / 2; i++) {
			swap(arr[a + i], arr[b - i]);
		}
	}

	for(int i = 1; i <= n; i++) {
		cout << arr[i] << ' ';
	}

	return 0;
}

 

 

 

 

 

반응형

댓글