fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 34125 (C++) 래환이의 아이브 콘서트 이야기
최초 업로드: 2025-08-14 22:25:01
최근 수정 시간: 2025-08-14 22:25:31
게시자: rlatjwls3333
카테고리: 백준
조회수: 5
# [Bronze III] 래환이의 아이브 콘서트 이야기 [문제 링크](https://www.acmicpc.net/problem/34125) ## 문제 설명 <p>래환이는 오랜만에 열리는 아이브 콘서트에 가기 위해 좌석을 예매하려고 한다. 공연장은 무대가 앞에 있고, 좌석은 무대 뒤로 $N \times M$ 형태로 배치되어 있다. 단, $M$은 홀수이다.</p> <p>아래 그림과 같이 예매 페이지에서는 현재 좌석의 예매 상태를 보여주며, 각 좌석은 비어 있거나 이미 예매된 상태이다. 이 중에서 비어 있는 좌석만 예매할 수 있다.</p> <p>래환이는 아이브가 가장 잘 보이는 위치를 원하기 때문에, 다음 값을 최소화하는 좌석 $R$행 $C$열을 예매하고자 한다: $$\mathrm{Distance} = R + \left| \frac{M+1}{2} - C \right|$$ 즉, 무대에 가까운 앞줄이면서도 가운데에 가까운 좌석을 가장 선호한다. 단, 행 번호는 위쪽부터 $1$번, 열 번호는 가장 왼쪽부터 $1$번이다.</p> <p>래환이를 위해 예매가 가능한 좌석 중에서 $\mathrm{Distance}$가 가장 작은 좌석을 찾아주자.</p> ## 입력 <p>첫 번째 줄에 두 개의 정수 $N$, $M$이 공백으로 구분되어 주어진다. $(1 \le N,M \le 100)$</p> <p>다음 $N$개의 줄에는 좌석 예매 상태를 나타내는 $M$개의 정수가 공백으로 구분되어 주어진다. $0$은 빈 좌석, $1$은 이미 예매된 좌석을 의미한다.</p> ## 출력 <p>예매할 수 있는 좌석이 없는 경우 <span style="color:#e74c3c;"><code>-1</code></span>을 출력한다.</p> <p>예매할 수 있는 좌석이 있는 경우 $\mathrm{Distance}$가 가장 작은 좌석의 행 번호와 열 번호를 공백으로 구분하여 출력한다.</p> <p>정답이 여러 개 존재한다면 그중 아무거나 출력해도 상관없다.</p> ## 풀이 #### 예매가 되지 않은 모든 좌석을 검사하는 브루트포스 문제입니다. ``` c++ #include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; int minDist=INT_MAX, r, c; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { bool state; cin >> state; if(!state) { int dist = i + abs((m+1)/2-j); if(dist<minDist) { minDist = dist; r = i; c = j; } } } } if(minDist==INT_MAX) cout << -1; else cout << r << ' ' << c; } ```