728x90
반응형
27930번: 당신은 운명을 믿나요?
문제
https://www.acmicpc.net/problem/27930
풀이
주어진 문자열을 차례대로 탐색하며 KOREA와 YONSEI 중 먼저 완성되는 문자를 출력하는 문제다. 따라서 주어진 문자열의 각 문자에 대해 KOREA와 YONSEI에 포함된 문자라면 작업을 수행한다.
KOREA와 YONSEI가 몇 번째 글자까지 완성되었는지 나타내는 변수 k와 y에 대해 k 또는 y가 (이번 글자가 들어있어야 할 위치 - 1)인 경우 1 증가시켜 줬다. 예를 들어 K는 KOREA의 1번째에만 쓰이므로 k가 0일 때 1 증가시킨다. E는 KOREA의 4번째와 YONSEI의 5번째에 쓰이므로 k가 3일 때 k를, y가 4일 때 y를 1 증가시켜 준다.
위 과정을 반복했을 때 동시에 KOREA와 YONSEI가 완성될 수는 없으므로 조건문을 통해 k==5일 때 KOREA를 출력하고 프로그램을 종료하거나 y==6일 때 YONSEI를 출력하고 프로그램을 종료한다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string s;
cin >> s;
int k = 0, y = 0;
for (char c : s) {
if (c == 'K' && k == 0)
k++;
if (c == 'O') {
if (k == 1)
k++;
if (y == 1)
y++;
}
if (c == 'R' && k == 2)
k++;
if (c == 'E') {
if (k == 3)
k++;
if (y == 4)
y++;
}
if (c == 'A' && k == 4)
k++;
if (c == 'Y' && y == 0)
y++;
if (c == 'N' && y == 2)
y++;
if (c == 'S' && y == 3)
y++;
if (c == 'I' && y == 5)
y++;
if (k == 5) {
cout << "KOREA";
return 0;
} else if (y == 6) {
cout << "YONSEI";
return 0;
}
}
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 2252 줄 세우기 (4) | 2023.04.04 |
---|---|
[백준 / BOJ] C++ 2623 음악프로그램 (0) | 2023.04.04 |
[백준 / BOJ] C++ 16566 카드 게임 (2) | 2023.04.03 |
[백준 / BOJ] C++ 20040 사이클 게임 (0) | 2023.04.03 |
[백준 / BOJ] C++ 1414 불우이웃돕기 (4) | 2023.04.02 |