12793 블록 게임

1182 부분집합의 합

1107 리모컨

2573 빙산


12793

시작지점 float으로 받아주고 +0.2한후 *2해서 int값에 저장. 왼쪽위 방향으로 먼저 가기 때문에 움직이면서 a[i][j] == | - . 이면 양쪽을 다 방문하기 때문에 dx,dy에 B가 있으면 큐에 넣는다. bfs는 진행하면서 B를 O로 바꾸던지 check를 1로 하던지 하면 된다. 두가지 다해도 시간초과 안난다. 벽에 부딪혔을 때 방향전환에 신경쓰면 딱히 틀릴 일은 없다.


1182

N 최대값이 20이라 비트마스크로 1<<N까지 다 검사한다. 1<=i<(1<<N), 0<=j<n 일 때 i&(1<<j)를 기준으로 sum을 구하고 계산하면 된다.


1107

N이 50만까지고 N에 대해 필요한 값을 구할 때 O(1)로 계산이 되기 때문에 0부터 100만까지 다 돌려본다. i%10, i/=10하면서 자리별로 부서진 버튼은 없나 검사하고 해당 채널로 이동 가능할 때와 아닐때를 구분해서 계산한다.


2573

1. 입력받을 때 0이 아니면 다 큐에 넣는다.

2. 덩어리를 센다.

3. a[i][j] != 0이면 dx,dy로 사면에 0이 몇개가 있나 검사한 후 cost배열을 만들어 저장한다.

4. 모두 순회 한 다음에 다시 i,j에 대해 cost가 0이 아니면 a[i][j] -= cost[i][j]하고 0이하로 떨어지면 0으로 만들어 준 후 0이 아니면 다시 queue에 집어넣는다.

5. !q.empty()까지 2~4반복. 덩어리>1이면 break 

'BOJ' 카테고리의 다른 글

3/24 boj  (0) 2017.03.24
3/15 boj  (0) 2017.03.16
3/13 boj  (0) 2017.03.15
3/12 boj  (0) 2017.03.13
3/11 boj  (0) 2017.03.12

+ Recent posts