본문 바로가기

전체 글

(117)
백준 / 바킹독님의 문제집 / 안전 영역(2468) 문제 설명 문제 해결 해당 문제도 BFS를 이용하여 풀었다. 일단 비에 양에 따라 달라지는 안전 지역의 개수를 계산하기 위해서 맵에 입력된 지역의 높이 중, 최대 높이가 얼마인지 구했다. 그리고 0부터 시작하여 최대 높이 직전까지 비가 내렸을 때 최대 얼마나 많은 안전 지대가 나오는지 확인했다. #include #include #include #include #include #include #include #include #include #define x first #define y second using namespace std; int N, max_height = 0; int map[101][101]; queue q; pair direction[4] = { make_pair(1,0), make_pai..
백준 / 바킹독님의 문제집 / 영역 구하기(2583) 문제 설명 문제 해결 통상적으로 우리가 배열을 사용할 때, 아래쪽로 y값이 증가하고, 오른쪽으로 x값이 증가한다. 하지만 문제에서 사용하는 좌표계는 인간에게 맞춰져 있다. 일단 입력은 그대로 받고, 연산할 때 인간 기준으로 맞춰서 BFS를 실행하면 문제를 해결할 수 있다. #include #include #include #include #include #include #include // 문제에서 사용하는 좌표 시스템이 기존에 사용하던 방식이랑 다르다. // 기존은 아래, 오른쪽으로 숫자가 커졌다면 지금은 위, 오른쪽으로 숫자가 커지는 형태 // 입력은 기존에 사용하던 방식을 그대로 쓰고, BFS 탐색할 때는 좌표를 뒤집어 사용하면 된다. #define x first #define y second usi..
백준 / 바킹독님의 문제집 / 단지 번호 붙이기(2667) 문제 설명 문제 해결 테스트 케이스를 하나 더 늘렸다. 4 4 0101 1010 0101 1010 잘못된 결과가 나와서 코드를 삼항 연산자를 이용하여 살짝 수정했다. #include #include #include #include #include #include #include #define x first #define y second using namespace std; queue q; pair direction[4] = { make_pair(1,0),make_pair(0,1), make_pair(-1,0), make_pair(0,-1) }; vector house_count_list; int map[30][30]; int visit[30][30]{ 0 }; int apt_comp_count = 0; ..