-
[Baekjoon - 2115] 갤러리문제 풀이/Baekjoon Online Judge 2023. 2. 13. 21:41
난이도: Gold V
태그
더보기- Greedy
풀이
1. 방향이 다른 두 그림이 겹칠 수 있을까?
더보기만약 겹친다면, 아래와 같은 느낌이 될 겁니다.
하지만 위 경우를 만들어낼 수 있는 벽의 배치가 존재하지 않기 때문에, 걱정하지 않아도 된다는 결론이 나옵니다.
2. 방향을 고정했을 때, 걸 수 있는 그림의 개수는?
더보기하나의 벽의 길이가 \( X \)라면, 그 벽에 \( \left\lceil \frac{X}{2} \right\rceil \)개의 그림을 걸 수 있습니다.
위 식을 특정 방향을 보는 모든 벽에 대해 다 구해주면 되겠죠.
3. 구현 디테일
더보기저의 경우는 벽의 길이를 계산하는 대신, 그림을 걸 수 있는 경우가 나오면 바로 그림을 건다고 한 뒤
그림이 겹치게 되는 경우를 건너뛰게 했습니다.
4. 코드
더보기1234567891011121314151617181920char mp[1020][1020];void Main(){int n, m; cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){ cin >> mp[i][j]; }}int ans = 0;for (int i = 1; i < n; i++){for (int j = 1; j < m; j++){if (mp[i][j]==mp[i][j+1] && mp[i+1][j]==mp[i+1][j+1] && mp[i][j]!=mp[i+1][j+1]){ ans += 1; j += 1; }}}for (int j = 1; j < m; j++){for (int i = 1; i < n; i++){if (mp[i][j]==mp[i+1][j] && mp[i][j+1]==mp[i+1][j+1] && mp[i][j]!=mp[i+1][j+1]){ ans += 1; i += 1; }}}cout << ans;}cs '문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon - 3973] Time To Live (0) 2023.02.13 [Baekjoon - 6137] 문자열 생성 (0) 2023.02.13 [Baekjoon - 24759] Slide Count (0) 2023.02.13 [Baekjoon - 18392] SHOP (0) 2023.02.13 [Baekjoon - 22971] 증가하는 부분 수열의 개수 (0) 2023.02.13