※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 26743번 문제인 Oczko이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/26743 

 

26743번: Oczko

Bajtazar organizuje turniej gry w oczko. Jest to gra w karty, w której celem jest dobierać karty, aby zbierać punkty. Wynik punktowy każdego gracza to suma wartości kart przez niego posiadanych: dwójka (oznaczana na wejściu znakiem 2) liczy się za

www.acmicpc.net

문제에서 주어진 카드게임의 규칙을 따라 올바른 최고점을 찾아 그 최고점을 갖는 카드들을 갖고 있는 참가자의 번호를 순서대로 출력하는 문제이다.

 

'A' 카드의 점수 계산의 경우 기본점 1점을 먼저 더해주고, 점수가 21보다 커지지 않게끔 나중에 남은 점수를 10씩 추가하는 것을 시도하는 것으로 깔끔히 구현해줄 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int N;
vector<int> ans;
int mx = 0;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	for (int i = 1; i <= N; i++) {
		string s; cin >> s;
		int sum = 0, cnt = 0;
		for (auto& l : s) {
			if ('2' <= l && l <= '9') sum += l - '0';
			else if (l == 'A') sum++, cnt++;
			else sum += 10;
		}
		while (cnt && sum + 10 <= 21) cnt--, sum += 10;

		if (sum > 21) continue;

		if (sum > mx) {
			mx = sum;
			ans.clear();
			ans.emplace_back(i);
		}
		else if (sum == mx) ans.emplace_back(i);
	}

	cout << ans.size() << '\n';
	for (auto& x : ans) cout << x << ' ';
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 26416 // C++] New Password  (0) 2022.12.26
[BOJ 9907 // C++] ID  (0) 2022.12.26
[BOJ 26766 // C++] Serca  (0) 2022.12.25
[BOJ 26742 // C++] Skarpetki  (0) 2022.12.25
[BOJ 26772 // C++] Poziome serca  (0) 2022.12.25

+ Recent posts