본문 바로가기

Algorithm/BOJ

[BOJ] 백준 8896 가위 바위 보 (C++)

문제 링크

www.acmicpc.net/problem/8896

 

8896번: 가위 바위 보

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 참여하는 로봇의 수 N이 주어진다. 다음 N개 줄에는 각 로봇에 저장되어 있는 문자열이 주어진다. 모든 로봇의 문

www.acmicpc.net

카테고리

구현, 비트마스크

문제 풀이

1. 큐에 각 로봇의 가위바위보 정보를 넣고 게임에 진 로봇만 pop해주는 형식으로 구현한다.


2. 우선, 큐를 순회하며 현재 round의 각 로봇의 정보들을 갱신한다. (이 때 비트를 쓴다.)   

    2-1. R(4) S(2) P(1)로 각 로봇이 해당 문자를 가지고 있다면 gameResult비트를 켜준다.


3. 이제 큐를 다시 순회하면서 gameResult결과에 따라 게임에 진 로봇을 pop해준다.

    3-1. R,S만 있음(4+2=6) : 로봇이 S을 냈으면 pop해준다.

    3-2. R,P만 있음(4+1=5) : 로봇이 R을 냈으면 pop해준다.

    3-3. S,P만 있음(2+1=3) : 로봇이 P을 냈으면 pop해준다.

    3-4. 나머지는 무승부


4. 승자만 남았을때는 승자 출력, 게임이 안 끝났을때는 무승부를 출력한다.

 

코드 (C++)

채점 결과

한마디

  각 round마다 승리한 로봇을 찾는데 어떤 자료구조를 이용할 지 고민을 좀 했다. 

  이런 시뮬레이션류 문제에서 비트마스크를 잘 활용하면 구현하는데 편리하다는것을 알게 되었다. 😲

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 백준 1461 도서관 (C++)  (0) 2021.01.31
[BOJ] 백준 2638 치즈 (C++)  (0) 2021.01.30
[BOJ] 백준 14923 미로 탈출 (C++)  (0) 2021.01.30
[BOJ] 백준 1600 말이 되고픈 원숭이 (C++)  (0) 2021.01.29
[BOJ] 백준 17281 ⚾ (C++)  (0) 2021.01.01