-
반응형
https://www.acmicpc.net/problem/20154
20154번: 이 구역의 승자는 누구야?!
첫째 줄에 알파벳 대문자로만 이루어진 길이 K(1 ≤ K ≤ 1,000,000)인 문자열 S가 주어진다.
www.acmicpc.net
풀이
보면, 토너먼트형식으로 각각 획의 수를 더해주며 진행한다. 그래서 마지막 점수가 홀수면 이기는것이고 짝수면 지는게임이다. 이건 너무 간단하게 풀었다. 각 알파벳에 해당하는 점수(획수)를 배열에 저장해둔뒤, 만나는 알파벳의 점수를 모두 더해준다(어차피 진행하면서 더한점수를 다시 더해주고 하기때문에 최종점수는 모든 점수의 합과 같다). 그런뒤 홀수인지 짝수인지 판별을 해주면 된다.
시간복잡도
O(N)
코드
#include<iostream> #include<algorithm> #include<string> using namespace std; int cnt[26] = { 3,2,1,2,3,3,3,3,1,1,3,1,3,3,1,2,2,2,1,2,1,1,2,2,2,1 }; int score=0; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); string str; cin >> str; for (int i = 0; i < str.size(); i++) { char c = str[i]; score += cnt[c - 'A']; } score %= 10; if (score % 2 == 0) { cout << "You're the winner?"; } else { cout << "I'm a winner!"; } return 0; }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준OJ] 4195번 친구 네트워크 (0) 2021.08.29 [백준OJ] 1034번 램프 (0) 2021.08.28 [백준OJ] 15684번 사다리 조작 (0) 2021.08.26 [백준OJ] 6137번 문자열 생성 (0) 2021.08.25 [백준OJ] 1633번 최고의 팀 만들기 (0) 2021.08.24 댓글