1) 풀이
좀비랜드에서는 살아남기 위해 따라야 하는 몇가지 룰들이 있다.
오래 살아남기 위해서는 어떤 룰 넘버가 어떤 인용문을 포함하는지 잘 알아야한다.
그래서 주어지는 룰 넘버에 맞는 인용문을 보여주는 프로그램을 만드는 것이 이 문제이다.
사실 영어문제라 그렇지, 풀어보면 별 것없는 문제였다!
1) string 배열을 하나 만든 다음, 제일 첫 인덱스부터 차례대로 주어지는 문장들을 q개 넣어준다 .
( 0 < q ≤ 50)
2) 그 다음, 보고자 하는 인용구들의 룰 넘버를 r개(0 < r ≤ 50) 입력해준다.
3) 룰 넘버는 1부터 시작하므로 1보다 작거나, 주어진 문장의 개수 q보다 큰 넘버가 들어오면
"No such rule"을 출력한다.
만약, 주어진 룰 넘버에 해당하는 인용문이 있다면, string 배열에서 q-1 인덱스를 참조해 인용문을 출력한다.
(배열의 인덱스는 0부터 시작. 인덱스 0에 Rule 1의 인용문이 저장되고, 인덱스 1에 Rule 2의 인용문이 저장
되고....룰 넘버보다 1 작은 인덱스에 인용문이 저장되는 형식!)
※인용문 출력형식 Rule(한칸 띄우고)룰넘버:(한칸 띄우고)해당 인용문
ex. Rule 2: The double tap
Rule 5: No such rule
인용문은 공백을 포함하고 있고, 일반 >> 연산자는 공백이 나오면 입력을 종료한다.
그래서 getline 함수와 cin.ignore()을 사용해야 하는데
이에 대한 내용은 이미 전글에서 다뤘으므로, 아래의 이전 글을 참고해주면 좋겠다.
2021.03.18 - [알고리즘 | 자료구조/백준] - [백준/c++] 10174 - 팰린드롬
아무튼.. 이렇게만 처리해주면 정답이 나오는 간단한 문제였다.
영어문제는 처음 풀어봐서 새로워따😆
2) 최종 소스코드
#include <bits/stdc++.h>
using namespace std;
string arr[52];
int q; //인용문 개수
int r; // 룰 넘버 개수
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> q;
cin.ignore();
for (int i = 0; i < q; i++) {
getline(cin, arr[i]); //한문장씩 인덱스에 넣어준다
}
cin >> r;
for (int i = 0; i < r; i++) {
int c;
cin >> c;
if (c<1 || c>q) cout << "Rule "<< c << ": "<< "No such rule" << '\n';
else cout << "Rule " << c<<": "<< arr[c-1] << '\n';
}
}
3) 참고자료
'Problem Solving > 백준' 카테고리의 다른 글
[백준/c++] 14650 - 걷다보니 신천역 삼 (Small) (0) | 2021.03.24 |
---|---|
[백준/c++] 13022 - 늑대와 올바른 단어 (0) | 2021.03.24 |
[백준/c++] 10174 - 팰린드롬 (0) | 2021.03.18 |
[백준/c++] 2309 - 일곱 난쟁이 (0) | 2021.03.17 |
[백준/c++] 10799 - 쇠막대기 (0) | 2021.03.12 |