본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 3048 개미

by 까망 하르방 2021. 2. 26.
반응형

출처: 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

댓글