본문 바로가기

Algorithm/Baekjoon39

2583_영역 구하기 ▶실버1 풀이 2차원 bfs문제. 점을 기준으로 탐색하는게 아니라 영역기준이므로 다음과 같은 형태로 정사각형 네 꼭짓점 중 왼쪽 아래를 기준으로 잡는다. x, y 값이 주어지면 for문으로 해당 범위 내의 arr[x][y]의 값을 true로 바꿔준다. 모든 범위가 주어지고 나면 (0, 0)부터 (n - 1, m - 1)까지 돌며 bfs 실행. 코드 #include #include #include #include #include #include #include #include using namespace std; queue q; int r[4] = { 1, -1, 0, 0 }; int c[4] = { 0, 0, 1, -1 }; bool arr[251][251]; int land; vector ans; in.. 2022. 11. 11.
3184_양 ▶실버1 풀이 2차원 bfs문제. 울타리 안 한 영역마다 bfs를 돌려주고 그 영역 내의 양 수와 늑대 수를 세서 양 > 늑대 일 경우 양 수를 더해주고, 양 tmpv) { cnto += tmpo; } else { cntv += tmpv; } } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int r, c; cin >> r >> c; for (int i = 0; i > garden[i][j]; } } for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (visited[i][j].. 2022. 11. 10.
12847_꿀 아르바이트 ▶실버4 풀이 누적 합을 이용한 문제. 배열 형태로 입력을 받아줄 때 이전까지의 누적 합을 배열에 저장한다. 이후 연속된 m을 더한 것 중 가장 큰 값을 구하는 것이므로 for문을 돌려 arr[i] - arr[i - m] 중 가장 큰 값이 답. 수가 엄청 커질 수 있으므로 자료형은 long long. 0번째 인덱스의 경우를 신경 안써줘서 100%에서 에러났다. 코드 #include #include #include #include #include #include #include using namespace std; long long money[100001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; .. 2022. 11. 9.