반응형
출처: https://www.acmicpc.net/problem/3048
Input
3 3
ABC
DEF
2
Output
CDBEAF
개미 그룹이 서로 →← 방향으로 맞닥뜨렸을 때 swap이 일어나는 것을 구현
▶ 오른쪽으로 이동중인 개미가 왼쪽으로 이동중인 개미와 마주쳤을 때 서로의 위치를 바꾼다.
개미의 정보를 구조체로 처리
▶ dir : 개미의 방향, ID: 개미 이름
#include <iostream>
using namespace std;
#define RIGHT 0 // 오른쪽으로 이동
#define LEFT 1 // 왼쪽으로 이동
struct ant {
int dir;
char ID;
};
// 개미는 총 알파벳 수만큼 존재
struct ant temp, ants[27];
void swap(int A, int B) {
temp = ants[A];
ants[A] = ants[B];
ants[B] = temp;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int firstGroup, secondGroup, T;
char name;
cin >> firstGroup >> secondGroup;
// 첫번째 그룹은 ABC로 입력받아도 진행방향을 CBA로 설정
for (int i = 0; i < firstGroup; i++) {
cin >> name;
ants[firstGroup - 1 - i] = {RIGHT, name};
}
for (int i = firstGroup; i < firstGroup + secondGroup; i++) {
cin >> name;
ants[i] = {LEFT, name};
}
cin >> T;
while (T--) {
for (int i = 0; i < firstGroup + secondGroup - 1; i++){
// 오른쪽 방향으로 향하는 개미를 기준으로 진행방향이 다른 개미와 위치 swap
if (ants[i].dir == RIGHT && ants[i].dir != ants[i + 1].dir){
swap(i, i+1);
i++;
}
}
}
for (int i = 0; i < firstGroup + secondGroup; i++)
cout << ants[i].ID;
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1331 나이트 투어 (0) | 2021.02.26 |
---|---|
[BOJ] 백준 1107 리모컨 (0) | 2021.02.26 |
[BOJ] 백준 5566 주사위 게임 (0) | 2021.02.26 |
[BOJ] 백준 10990 별 찍기 - 15 (0) | 2021.02.26 |
[BOJ] 백준 13015 별 찍기 - 23 (0) | 2021.02.26 |
댓글