Problem Solving/백준

[백준/c++] 4459 - Always Follow the Rules in Zombieland

세고래 2021. 3. 18. 18:59

www.acmicpc.net/problem/4459

 

4459번: Always Follow the Rules in Zombieland

Input will begin with an integer q, 0 < q ≤ 50, on its own line signifying the number of quotes. On the following lines will be the quotes, one per line. No quote will be greater than 65 characters. The first quote will be rule 1, the second quote rule 2

www.acmicpc.net


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) 참고자료
728x90