3733번: Shares
A group of N persons and the ACM Chief Judge share equally a number of S shares (not necessary all of them). Let x be the number of shares aquired by each person (x must be an integer). The problem is to compute the maximum value of x. Write a program that
www.acmicpc.net
문제 풀이
이 문제는 두 번째 입력값에 첫 번째 입력값 + 1인 값을 나눠준 몫을 출력해주면 되는 문제이다. 문제는 쉬우나, 테스트 케이스가 정해져 있지 않고 EOF(End Of File)를 받아서 프로그램이 종료되어야 한다는 점이 특이 사항이다.
EOF(C++)
C++에서는 EOF를 받는 방법이 몇 가지 있다.
- scanf의 리턴값을 이용한다.
이 방법은 scanf로 입력값을 받을 경우 사용한다. scanf를 통해 정상적으로 입력값을 받았다고 한다면, scanf의 반환값은 입력값의 갯수가 된다. 만약, 우리가 받아야하는 입력값의 갯수가 2개일 때, 반환값이 2가 아닐 경우 상황에 따라 EOF 처리를 할 수 있다.
int a, b;
if (scanf("%d %d", &a, &b) != 2) printf("EOF");
else printf("%d %d", a, b);
또 하나의 방법은 EOF 상수를 이용하는 것이다. EOF는 -1이라는 상수로 매크로 지정되어 있기 때문에, 반환값을 이용하는 것 보다 EOF 처리를 더 세밀하게 해줄 수 있다.
int a, b;
if (scanf("%d %d", &a, &b) == EOF) printf("EOF");
else printf("%d %d", a, b);
- cin.eof()를 사용한다.
이 방법은 cin으로 입력값을 받을 경우 사용한다. cin에 EOF가 입력되어 버퍼에 담기게 되면, cin.eof()는 true가 된다. 이 특징을 통해 EOF 처리를 할 수 있다.
int a, b;
cin >> a >> b;
if (cin.eof()) cout << "EOF";
else cout << a << " " << b;
EOF(python)
python에서는 여러 방법이 있겠지만, 내가 즐겨 사용하는 방법 중 하나인 try ~ except 문을 이용한 EOF 처리가 있다. 이 문제의 경우, 한 줄에 2개의 수를 입력받게 되는데, 그렇다면 split함수를 사용할 것이다. 만약 input().split()을 했을 때, 입력값이 존재하지 않아 에러가 발생하게 된다면, 그 상황에 대해 try ~ except 문을 통해 EOF 처리를 할 수 있다.
try:
a, b = map(int, input().split())
print("a b")
except:
print("EOF")
input().split() 부분에서 에러가 발생할 것을 예측할 수 있기 때문에, 이처럼 사용할 수 있다.
정답 링크
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0)
#define ll long long
int main() {
int a, b;
while (scanf("%d %d", &a, &b) == 2) printf("%d\n", b / (a + 1));
}
python
try:
while True :
a, b = map(int, input().split())
print(b // (a + 1))
except :
exit(0)
'Algorithm > PS' 카테고리의 다른 글
[BOJ/백준] 4470 - 줄 번호 [C++/python] (0) | 2023.03.01 |
---|---|
[BOJ/백준] 3765 - Celebrity jeopardy [C++/python] (0) | 2023.03.01 |
[C++, python] BOJ, 백준 2083 - 럭비 클럽 (0) | 2023.02.28 |
[C++, python] 프로그래머스 - 숫자의 표현 (0) | 2023.02.27 |
[C++, python] 프로그래머스 - 최솟값 만들기 (0) | 2023.02.27 |