티스토리 뷰
반응형
풀이
주어진 N개의 문장으로 마지막 문장을 만들 수 있는지 출력하면 된다. 단, 조건은 N개의 문장과 같은 순서로 단어가 나열되어야 한다. 첫 번째 단어가 가장 먼저 나타나야 하므로, 자료구조 중에서 선입선출의 특징을 갖고 있는 큐를 사용하였다. 입력 받은 문자열을 ' '을 기준으로 나눠 큐에 저장한 다음, 마지막 문장에서 큐의 순서대로 단어가 나타나는지 확인하면 된다.
string 변수를 다루다보니 여러 라이브러리를 사용했는데, 특히 c++에서는 string 변수에 대한 split() 메소드가 없어서 직접 만들어 사용하였다.
queue<string> split(string input, char delimiter) {
queue<string> answer;
stringstream ss(input);
string temp;
while (getline(ss, temp, delimiter)) {
answer.push(temp);
}
return answer;
}
코드
#include <iostream>
#include <queue>
#include <string>
#include <sstream>
#include <vector>
#include <cstring>
#define MAX 101
using namespace std;
int N;
string S, L;
queue<string> q[MAX];
queue<string> words;
bool possible = false;
void init();
queue<string> split(string str, char delimiter);
int main() {
init();
cin >> N;
cin.ignore();
for (int i = 0; i < N; i++) {
getline(cin, S);
q[i] = split(S, ' ');
}
getline(cin, L);
words = split(L, ' ');
while (!words.empty()) {
possible = false;
string word = words.front();
for (int i = 0; i < N; i++) {
if (!q[i].empty() && !word.compare(q[i].front())) {
q[i].pop();
possible = true;
break;
}
}
words.pop();
if (!possible) {
cout << "Impossible";
return 0;
}
}
for (int i = 0; i < N; i++) {
if (!q[i].empty()) possible = false;
}
if (possible) cout << "Possible";
else cout << "Impossible";
return 0;
}
void init() {
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(false);
}
queue<string> split(string input, char delimiter) {
queue<string> answer;
stringstream ss(input);
string temp;
while (getline(ss, temp, delimiter)) {
answer.push(temp);
}
return answer;
}
반응형
'BOJ' 카테고리의 다른 글
백준 2812번: 크게 만들기 (0) | 2022.02.09 |
---|---|
백준 18115번: 카드 놓기 (0) | 2022.02.09 |
백준 1863번: 스카이라인 쉬운거 (0) | 2022.02.09 |
백준 6604번: Matrix Chain Multiplication (0) | 2022.02.09 |
백준 15889번: 호 안에 수류탄이야!! (0) | 2022.02.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 버추억박스오류
- cat
- Baekjoon27211
- E_FAIL
- api문서
- awk프로그램
- Baekjoon27219
- 백준27219
- 백준
- 쇼미더코드
- 코테
- GitHubAPIforJava
- linuxtouch
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- virtualbox
- atq
- cron시스템
- GithubAPI
- Linux
- OnActivityForResult
- baekjoon
- linuxawk
- linuxgedit
- 버추억박스에러
- 사용자ID
- 백준27211
- 리눅스
- 리눅스cron
- whatis
- linux파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함