※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 4335번 문제인 숫자 맞추기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4335
4335번: 숫자 맞추기
스탠과 올리는 정수 맞추기 게임을 하고 있다. 스탠은 1과 10사이의 정수 하나를 생각하고, 올리는 스탠이 생각한 수를 맞춰야 한다. 올리가 수를 말할 때마다 스탠은 올리가 말한 수가 큰지, 작
www.acmicpc.net
한 게임에서 주어지는 조건들을 종합하면 다음과 같다.
(1) 찾고자 하는 수는 \(x_1, x_2, ..., x_k\)보다 작아야 한다.
(2) 찾고자 하는 수는 \(y_1, y_2, ..., y_k\)커야 한다.
(1)은 \(x_i\)중 가장 작은 값을 저장해두는 것으로, (2)는 \(y_i\) 중 가장 큰 값을 저장해두는 것으로 간단하게 확인할 수 있다. 이를 이용해 각 게임마다 스탠이 거짓말을 했는지 알아내자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int L = 0, R = 11;
int x; string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
while (cin >> x >> s >> s) {
if (s[0] == 'h') R = min(R, x);
else if (s[0] == 'l') L = max(L, x);
else {
if (L < x && x < R) cout << "Stan may be honest\n";
else cout << "Stan is dishonest\n";
L = 0, R = 11;
}
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 3018 // C++] 캠프파이어 (0) | 2023.12.24 |
---|---|
[BOJ 4649 // C++] Tanning Salon (0) | 2023.12.23 |
[BOJ 11059 // C++] 크리 문자열 (1) | 2023.12.21 |
[BOJ 20052 // C++] 괄호 문자열 ? (0) | 2023.12.20 |
[BOJ 13339 // C++] XOR 수열 (1) | 2023.12.19 |