문제 링크
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 |