https://www.acmicpc.net/problem/2667완전 기본적인 bfs문제다.감다뒨줄 알았는데 다행이당..ㅎ1. 문제 분석간단히 문제 설명이다.70110100011010111101010000111010000001111100111000 1은 집이고 0은 집이 아니다.1끼리 묶여있는 곳이 '단지'다.단지의 개수를 출력하고, 단지에 있는 집이 몇 개인지 오름차순으로 출력하면 된다. 나는 여기서 오름차순 출력을 위해 우선순위 큐를 사용했다. priority_queue, greater> ansPQ; 주의할 점이라면,priority_queue는 반복자(iterator)를 지원하지 않는다는 점이다.priority_queue는 내부적으로 heap 자료구조를 사용하기 때문에begin(), end()..
이번 글은 알고리즘 문제를 풀 때, 사용하는 자료구조와 유용한 STL컨테이너를 목차식으로 정리한 글이다.obsidian에서 따로 정리하고 있기도 한데,좀 유용한 것 같아서 불특정 다수와 공유하고 싶다..(많이 안볼거같지만 그래두..) 1. 자주 쓰는 자료구조 & STL 컨테이너컨테이너설명vector가변 크기 배열, 끝 삽입 O(1), 중간 삽입/삭제 O(n)deque양쪽 끝 삽입/삭제 O(1), 슬라이딩 윈도우 등에 사용list이중 연결 리스트, 중간 삽입/삭제 O(1)stack후입선출 (LIFO), 내부적으로 deque 기반queue선입선출 (FIFO), BFS 등에서 사용priority_queue우선순위 큐 (기본: 최대 힙), 삽입/삭제 O(log n), 조회 O(1)set정렬된 중복 없는 집합,..
https://www.acmicpc.net/problem/14503구현 문제다. 조건이 엄청 많은건 아니었지만, 그래도 조건 정리 제대로 안하면 뱅글뱅글 돌아갈수있는 문제다 풀이 과정1~N- 문제 정의로봇 청소기, 방의 상태 -> 청소하는 영역의 개수 구하는 프로그램방 : n*m0 : 위 - 북 (-1,0)1 : 우 - 동 (0,1)2 : 하 - 남 (1,0)3 : 좌 - 서 (0,-1)(r,c)00 01 0210 11 1220 21 221. 현재 칸이 아직 청소되지 않은 경우, 현재 칸을 청소한다. : ans++2. 현재 칸의 주변 $4$칸 중 청소되지 않은 빈 칸이 없는 경우, : 모두다isVisited == true 인 경우 | 하나라도 false가 아니면 1. 바라보는 방향을 유지한 채로 ..