이번 글에서는 백준 온라인 저지의 24736번 문제인 “Football Scoring"을 풀어보도록 하겠다. 이 문제는 미식축구의 득점 방식을 이해하고, 주어진 박스 스코어를 기반으로 각 팀의 총점을 계산하는 간단한 구현 문제이다.
문제 : https://www.acmicpc.net/problem/24736
문제 설명
미국 프로 미식축구에서는 다섯 가지 방법으로 점수를 얻을 수 있다:
- 터치다운(Touchdown) - 6점
- 필드골(Field Goal) - 3점
- 세이프티(Safety) - 2점
- 터치다운 후 추가 점수
- 1점 (필드골 또는 세이프티) - 일반적으로 **“포인트 애프터(Point after)”**라고 부른다.
- 2점 (터치다운) - 일반적으로 **“투 포인트 컨버전(Two-point conversion)”**이라고 부른다.
두 팀의 박스 스코어(Box score)가 주어졌을 때, 각 팀의 총점을 계산하는 프로그램을 작성해야 한다.
입력
- 두 줄로 구성되며, 각 줄에는 다섯 개의 0 이상인 정수 T, F, S, P, C가 공백으로 구분되어 주어진다.
- T: 터치다운 횟수 (0 ≤ T ≤ 10)
- F: 필드골 횟수 (0 ≤ F ≤ 10)
- S: 세이프티 횟수 (0 ≤ S ≤ 10)
- P: 포인트 애프터 횟수
- C: 투 포인트 컨버전 횟수
- (0 ≤ (P+C) ≤ T)
- 첫 번째 줄은 방문 팀의 박스 스코어, 두 번째 줄은 홈 팀의 박스 스코어이다.
출력
- 한 줄에 방문 팀과 홈 팀의 총점을 공백으로 구분하여 출력한다.
예제 입력
| |
예제 출력
| |
접근 방식
이 문제는 각 팀의 득점 요소별 횟수를 입력받고, 해당 득점 요소에 따른 점수를 곱하여 총점을 계산하는 간단한 구현 문제이다.
- 득점 요소별 점수
- 터치다운(Touchdown): 6점
- 필드골(Field Goal): 3점
- 세이프티(Safety): 2점
- 포인트 애프터(Point after): 1점
- 투 포인트 컨버전(Two-point conversion): 2점
각 팀의 총점은 다음과 같이 계산된다:
| |
주어진 입력을 바탕으로 위의 공식을 적용하여 방문 팀과 홈 팀의 총점을 각각 계산하면 된다.
C++ 코드와 설명
| |
코드의 동작 단계별 설명
- 입력 받기
cin을 사용하여 방문 팀과 홈 팀의 박스 스코어를 각각 입력받는다.
- 점수 계산
- 각 팀의 득점 요소별 횟수에 해당 점수를 곱하여 총점을 계산한다.
- 터치다운:
T * 6 - 필드골:
F * 3 - 세이프티:
S * 2 - 포인트 애프터:
P * 1 - 투 포인트 컨버전:
C * 2
- 출력하기
- 계산된 방문 팀과 홈 팀의 총점을 공백으로 구분하여 출력한다.
C++ without library 코드와 설명
| |
코드의 동작 단계별 설명
- 입력 받기
scanf를 사용하여 방문 팀과 홈 팀의 박스 스코어를 각각 입력받는다.
- 점수 계산
- 각 팀의 득점 요소별 횟수에 해당 점수를 곱하여 총점을 계산한다.
- 출력하기
printf를 사용하여 계산된 총점을 출력한다.
이 코드는 stdio.h만을 사용하여 표준 입력과 출력을 처리하였다.
Python 코드와 설명
| |
코드의 동작 단계별 설명
- 입력 받기
input().split()을 사용하여 입력된 문자열을 공백 기준으로 분리하고,map(int, ...)을 통해 정수로 변환하여 변수에 저장한다.
- 점수 계산
- 각 팀의 득점 요소별 횟수에 해당 점수를 곱하여 총점을 계산한다.
- Python에서는
+=연산자를 사용하여 변수를 갱신한다.
- 출력하기
print를 사용하여 계산된 총점을 출력한다.
결론
이 문제는 간단한 수학적 계산과 입력 처리를 요구하는 구현 문제이다. 미식축구의 득점 방식을 정확히 이해하고, 주어진 입력에 따라 점수를 계산하면 쉽게 해결할 수 있다. 이러한 문제에서는 문제의 조건을 정확히 파악하고, 구현 과정에서 실수가 없도록 주의하는 것이 중요하다. 추가적으로, 입력 제한 조건을 확인하여 예외 상황을 방지하는 것도 필요하다.
![Featured image of post [Algorithm] C++/Python 백준 24736번 : Football Scoring](/post/algorithm/2024-10-16-boj-24736/tmp_wordcloud_hu_13d495ce80101729.png)
![[Algorithm] C++/Python 백준 20492번 : 세금](/post/algorithm/2024-10-16-boj-20492/tmp_wordcloud_hu_94912f2afa20b38a.png)
![[Algorithm] C++/Python 백준 23808번 : 골뱅이 찍기 - ㅂ](/post/algorithm/2024-10-16-boj-23808/tmp_wordcloud_hu_4505524f68b30244.png)
![[Algorithm] C++/Python 백준 24736번 : Football Scoring](/post/algorithm/2024-10-16-boj-24736/tmp_wordcloud_hu_f0858d7de95fd087.png)
![[Algorithm] C++/Python 백준 28444번 : HI-ARC=?](/post/algorithm/2024-10-16-boj-28444/tmp_wordcloud_hu_ce43b63471280039.png)
![[Algorithm] C++/Python 백준 28702번 : FizzBuzz 스페셜 저지](/post/algorithm/2024-10-16-boj-28702/tmp_wordcloud_hu_21b39618dff2a5fb.png)
![[Algorithm] C++/Python 백준 14939번 : 불 끄기](/post/algorithm/2024-12-26-boj-14939/tmp_wordcloud_hu_5e53adfd6a1ff55.png)
![[Algorithm] C++/Python 백준 7523번 : Gauß 다국어](/post/algorithm/2024-10-25-boj-7523/tmp_wordcloud_hu_42a4e033a2e857e7.png)
![[Algorithm] cpp 백준 18186번: 라면 사기 (Large)](/post/algorithm/2025-09-04-boj-18186-ramen-buying-large-greedy-cpp-solution/wordcloud_hu_2d2533b219761dcf.png)
![[Algorithm] cpp 백준 19955번: 침략전쟁 - BFS·DSU 시뮬레이션](/post/algorithm/2025-09-04-boj-19955-invasion-war-bfs-dsu-cpp-solution/wordcloud_hu_5a9b4c559e1d3221.png)