문제 링크
17281번: ⚾
⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종
www.acmicpc.net
카테고리
백트래킹, 브루트 포스
문제 풀이
1. 백트래킹을 이용해 야구선수들의 순서를 정한다. (백트래킹)
2. 각 순서에 맞게 게임을 시작해 본다. (브루트 포스)
3. 게임의 조건에 맞게 야구를 시작하고, 해당 순서에 따른 점수를 비교해 그 중 최댓값을 출력한다.
* 게임 조건
1. 이닝별로 게임을 시작한다. (이닝 시작 시 변수들 초기화)
2. 베이스에 나가있는 타자들의 위치를 remainBase큐에 저장한다.
3. 각 타자들의 공 친 결과에 따라 remainBase 큐를 갱신한다.
3-1. 안타 : 3루 이상 타자들의 수만큼 점수++ 해주고 pop, 타자 본인과 나머지 타자 1루씩 전진
3-2. 2루타 : 2루 이상 타자들의 수만큼 점수++ 해주고 pop, 타자 본인과 나머지 타자 2루씩 전진
3-3. 3루타 : 1루 이상 타자들의 수만큼 점수++ 해주고 pop, 타자 본인 3루씩 전진
3-4. 홈런 : (모든 타자들의 수+본인)만큼 점수++ 해주고 pop
3-5. out : out값++ 해준다.
주의할 점
기존의 야구는 9이닝이지만 여기는 최대 50이닝이라 배열 크기를 좀 더 크게 정해줘야한다. (런타임 에러 방지)
코드 (C++)
채점 결과
한마디
처음 제출할 때 컴파일 에러, 런타임 에러 둘 다 떠서 당황했던 문제다.
컴파일 에러는 C++17에서 배열 이름을 visit으로 해서, 런타임 에러는 배열 크기를 작게 해서 받았다.
문제 조건을 좀 더 세심히 읽어봐야겠다. 😲
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 백준 1461 도서관 (C++) (0) | 2021.01.31 |
---|---|
[BOJ] 백준 2638 치즈 (C++) (0) | 2021.01.30 |
[BOJ] 백준 14923 미로 탈출 (C++) (0) | 2021.01.30 |
[BOJ] 백준 1600 말이 되고픈 원숭이 (C++) (0) | 2021.01.29 |
[BOJ] 백준 8896 가위 바위 보 (C++) (0) | 2020.12.31 |