티스토리 뷰

https://www.acmicpc.net/problem/15787

 

15787번: 기차가 어둠을 헤치고 은하수를

입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. 

www.acmicpc.net

 

하나의 기차를 string = "000000000000000000000" 로 본다. (인덱싱 편하게 하기 위해 21개의 0)

 

각 명령에 맞게 수행한 후에 set 에 넣어 주면 중복이 알아서 제거되기 때문에 set 의 크기가 답이 된다.

 

 


 

풀고나서 보니 태그가 비트마스킹이 있었다.

시간상 위 풀이와 거의 차이는 없지만 비트마스킹을 쓰면 3번, 4번 명령이 더 간단해진다.

 

3번, 4번 명령을 left shift 와 right shift 로 처리하면 된다.

c++ 의 <bitset> 에는 bitset 자체에 쉬프트를 주지 못하고 .to_ulong() or .to_ullong() 으로 변환해서 쉬프트 해줘야 한다.

 

 

'PS' 카테고리의 다른 글

HackerRank. New Year Chaos  (0) 2023.10.19
HackerRank. Recursive Digit Sum  (0) 2023.10.19
백준 21314. 민겸 수  (0) 2023.10.17
백준 3019. 테트리스  (0) 2023.10.17
백준 19942. 다이어트  (0) 2023.10.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함