※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 28432번 문제인 끝말잇기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/28432
28432번: 끝말잇기
첫 줄에 끝말잇기 기록의 길이 $N$ 이 주어집니다. $(1 \le N \le 100)$ 둘째 줄부터 다음 $N$개의 줄에는 끝말잇기의 기록 $S_1, \cdots, S_N$이 한 줄에 하나씩 주어집니다. 여기서, 하나의 $S_i$는 “?” 로
www.acmicpc.net
주어지는 "?" 문자열에 대하여 다음을 만족하는 문자열을 찾아 문제를 해결하자.
(1) "?"이 첫 문자열이 아니라면, 문제의 답은 "?"의 앞서나온 문자열의 마지막 문자와 같은 첫 문자를 가져야 한다.
(2) "?"이 마지막 문자열이 아니라면, 문제의 답은 "?" 다음으로 나온 문자열의 첫 문자와 같은 마지막 문자를 가져야 한다.
(3) 문제의 답은 주어진 끝말잇기에 사용된 적이 없어야 한다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <set>
using namespace std;
int N, M;
string shiritori[100];
set<string> st;
int idx;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
string& s = shiritori[i];
cin >> s;
if (s == "?") idx = i;
else st.insert(s);
}
cin >> M;
while (M--) {
string s; cin >> s;
if (idx > 0) {
if (s.front() != shiritori[idx - 1].back()) continue;
}
if (idx + 1 < N) {
if (s.back() != shiritori[idx + 1].front()) continue;
}
if (st.count(s)) continue;
cout << s;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1996 // C++] 지뢰 찾기 (0) | 2023.08.08 |
---|---|
[BOJ 28431 // C++] 양말 짝 맞추기 (0) | 2023.08.07 |
[BOJ 16165 // C++] 걸그룹 마스터 준석이 (0) | 2023.08.07 |
[BOJ 16168 // C++] 퍼레이드 (0) | 2023.08.06 |
[BOJ 16167 // C++] A Great Way (0) | 2023.08.05 |