2023. 10. 9. 20:40ㆍ알고리즘문제 풀이/백준
문제
binary는 호남선~
num row column char에~
binary는 호남선은 총 N$N$개의 **0**과 **1**로 표현할 수 있다. **0**은 저지대를 지나는 철로를 나타내고, **1**은 고지대를 지나는 철로를 나타낸다.
binary는 호남선의 구간은 연속된 두 개의 철로를 뜻한다. **01**은 오르막 구간, **10**은 내리막 구간, **00**과 **11**은 평탄한 구간이다.
binary는 호남선의 각 구간이 어떤 구간인지 파악하고 상대적 많고 적음을 알아내는 것은, 철로의 유지보수를 위해 매우 중요한 일이다.
입력
binary는 호남선의 철로 길이 N$N$이 주어진다. (8≤N<2 048$8 \leq N < 2\ 048$)
출력
다음을 표준 출력 스트림(stdout)으로 한 줄에 출력하여, 해당 위치의 철로가 무언인지 알아낼 수 있다.
- ? $k$ : 왼쪽부터 $k$번째 철로를 출력한다. ($1 \leq k \leq N$)k
- 1≤k≤N
- k
각 질문을 출력한 후에는 반드시 표준 출력 버퍼를 flush 해야 하고, 표준 입력 스트림(stdin)을 통해 질문에 대한 답을 입력받아야 한다. 그렇지 않으면, 시간 초과 또는 런타임에러를 받는다.
질문하는 k$k$의 범위가 철로 구간을 벗어나는 경우, 틀렸습니다를 받는다.
질문은 최대 ⌊log2N⌋$\lfloor log_2 N \rfloor$번 할 수 있고, 이보다 더 많이 질문을 하면 틀렸습니다를 받는다.
최대 ⌊log2N⌋$\lfloor log_2 N \rfloor$번의 질문을 이용해, 정답을 아래의 표준 출력 스트림(stdout)을 이용해 한 번만 출력한다.
- ! $a$ : binary는 호남선에서 오르막 구간의 수가 내리막 구간의 수보다 많다면 **1**을, 같다면 **0**을, 적다면 **1**을 출력한다.
- a
그 후 반드시 표준 출력 버퍼를 flush해야 하고, 프로그램을 종료한다. 이것은 질문 횟수에 포함되지 않는다.
예제 입력 1
4
0
0
1
1
예제 출력 1
? 1
? 3
? 4
? 2
! 1
입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해, 의도적으로 제한 조건과 줄 간격 등을 조절한 것이다. 실제 입출력 및 제한 조건과 다른 것에 유의하자.
주어진 binary는 호남선의 철로는 **0101**이므로 오르막 구간이 2$2$개, 내리막 구간이 1$1$개 있다. 따라서 **1**을 출력하면 정답이다.
노트
출력 후에는 표준 출력 버퍼를 flush해 주어야 한다. 언어 별로 표준 출력 버퍼를 flush하는 방법은 다음과 같다.
- C: fflush(stdout)
- C++: std::cout << std::flush
- Java: System.out.flush()
- Python: sys.stdout.flush()
- Kotlin: System.out.flush()
출처
University > 연세대학교 > 2021 연세대학교 프로그래밍 경진대회 D번
- 문제를 검수한 사람: chogahui05, cs71107, IHHI, Juno, klm03025, lky7674, Picasso, tony9402, yjyj1027, ystaeyoon113
- 문제를 만든 사람: QuqqU
알고리즘 분류
채점 및 기타 정보
- 예제는 채점하지 않는다.
내 풀이
#include <iostream>
using namespace std;
int n, a, b;
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n;
cout << "? 1" << endl;
cin >> a;
cout << "? " << n << endl;
cin >> b;
if (a == 1 && b == 0) {
cout << "! -1" << endl;
}
else if (a == 0 && b == 1) {
cout << "! 1" << endl;
}
else {
cout << "! 0" << endl;
}
return 0;
}'알고리즘문제 풀이 > 백준' 카테고리의 다른 글
| 백준 24724 현대모비스와 함께하는 부품 관리 C++ (0) | 2023.10.09 |
|---|---|
| 백준 24723 녹색거탑 C++ (0) | 2023.10.09 |
| 백준 23303 이 문제는 D2 입니다. C++ (0) | 2023.10.09 |
| 백준 23289 온풍기 안녕 C++ (0) | 2023.10.09 |
| 백준 22341 사각형 면적 C++ (1) | 2023.10.09 |