-
[백준/BOJ] 3048번 개미 (C++)알고리즘 문제풀이/백준 2021. 9. 18. 20:48
https://www.acmicpc.net/problem/3048
벡터를 pair형으로 선언해서 방향도 함께 담을수 있도록 했다. 0은 오른쪽, 1은 왼쪽을 의미한다. 전체 개미를 탐색하면서 현재 개미와 다음 개미의 방향을 비교한다. 서로 마주보는 방향이라면, swap해주고, 다음 비교를 위해 두칸을 이동한다. 아니라면 한칸만 이동하며 다시 위의 과정을 반복한다.
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int n1, n2, t; cin >> n1 >> n2; vector<pair<char, int> > v; // 0 : right, 1 : left string str; cin >> str; for(int i = n1 - 1; i >= 0; i--) { v.push_back({ str[i], 0 }); } cin >> str; for(int i = 0; i < n2; i++) { v.push_back({ str[i], 1 }); } cin >> t; int time = 0; while(time != t) { for(int i = 0; i < n1 + n2 - 1; i++) { if(v[i].second == 0 && v[i + 1].second == 1) { swap(v[i], v[i + 1]); i++; } } time++; } for(int i = 0; i < n1 + n2; i++) { cout << v[i].first; } }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 1919번 애너그램 만들기 (C++) (0) 2021.09.20 [백준/BOJ] 2980번 도로와 신호등 (C++) (0) 2021.09.19 [백준/BOJ] 10798번 세로 읽기 (C++) (0) 2021.09.14 [백준/BOJ] 11000번 강의실 배정 (C++) (0) 2021.09.14 [백준/BOJ] 1969번 DNA (C++) (0) 2021.09.13