fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 34511 (C++) Polyominonal Puzzle
최초 업로드: 2025-10-10 16:22:35
최근 수정 시간: 2025-10-10 16:22:35
게시자: rlatjwls3333
카테고리: 백준
조회수: 14
# [Bronze I] Polyominonal Puzzle [문제 링크](https://www.acmicpc.net/problem/34511) ## 문제 설명 <p>재호는 퍼즐을 맞추는 데에 있어 뛰어난 감각이 있다. $12$개의 조각으로 푸는 펜토미노 퍼즐을 마스터하고 지루함을 느낀 재호는 새로운 방법으로 퍼즐을 즐기고자 했다. 미노 퍼즐 조각을 서로 맞닿아있는 선분들의 길이를 구하면서 퍼즐을 풀고자 한다. 여러분은 재호를 도울 프로그램을 작성해야 한다.</p> <p>크기가 $N \times M$인 격자 모양의 보드 위에는 두 개의 퍼즐 조각이 놓여 있다.</p> <ul> <li>하나는 $X$ 퍼즐 조각이고, 다른 하나는 $Y$ 퍼즐 조각이다.</li> <li>각 퍼즐 조각은 서로 다른 $1 \times 1$ 크기의 칸들을 변끼리 이어 붙여 만든 연결된 도형이다.</li> <li>보드에 놓인 두 퍼즐 조각은 서로 겹치지 않고 한 개씩 존재한다.</li> </ul> <p>두 퍼즐 조각이 서로 맞닿아있는 선분들의 길이의 총합을 구해보자.</p> ## 입력 <p>첫 번째 줄에 보드의 세로 크기 $N$과 가로 크기 $M$이 공백으로 구분되어 주어진다.</p> <p>이후 $N$개의 줄에 걸쳐 격자의 상태가 주어진다. 그중 $i$번째 줄에는 $i$번 행의 상태를 나타내는, 길이가 $M$인 문자열 $S_i$가 주어진다. 문자열 $S_i$는 다음 세 가지 문자로 구성된다. $(1 \le i \le N)$</p> <ul> <li><span style="color:#e74c3c;"><code>X</code></span>: $X$ 퍼즐 조각에 속하는 칸</li> <li><span style="color:#e74c3c;"><code>Y</code></span>: $Y$ 퍼즐 조각에 속하는 칸</li> <li><span style="color:#e74c3c;"><code>.</code></span>: 빈칸</li> </ul> <p>입력으로 주어지는 퍼즐 조각은 각각 연결되어 있으며, 서로 겹치지 않는다.</p> ## 출력 <p>첫 번째 줄에 두 퍼즐 조각이 서로 맞닿아있는 선분들의 길이의 총합을 출력한다.</p> ## 풀이 'X'와 'Y'가 맞닿은 개수를 세면 됩니다. ``` c++ #include<bits/stdc++.h> using namespace std; string s[100]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i=0;i<n;i++) cin >> s[i]; int len=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(i+1<n && (s[i][j]=='X' && s[i+1][j]=='Y' || s[i][j]=='Y' && s[i+1][j]=='X')) len++; if(j+1<m && (s[i][j]=='X' && s[i][j+1]=='Y' || s[i][j]=='Y' && s[i][j+1]=='X')) len++; } } cout << len; } ```