[백준/BOJ] 백준 27649번 : 토크나이저
2023. 10. 13. 16:04ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/27649
토큰을 만들어 나가다가 구분자를 만나면 만들던 토큰을 저장하는 방법으로 문제를 해결했다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
string input;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
getline(cin, input);
vector<string> result;
string token = "";
int index = 0;
while (index < input.size()) {
//구분자를 만났을때
if (input[index] == '<' || input[index] == '>' || input[index] == '(' || input[index] == ')' || input[index] == ' ') {
if (token.size() > 0) {
result.push_back(token);
token = "";
}
if (input[index] != ' ') {
token += input[index];
result.push_back(token);
token = "";
}
index++;
}
else if (input[index] == '&' && (index + 1 < input.size() && input[index + 1] == '&')) {
if (token.size() > 0) {
result.push_back(token);
token = "";
}
result.push_back("&&");
index += 2;
}
else if (input[index] == '|' && (index + 1 < input.size() && input[index + 1] == '|')) {
if (token.size() > 0) {
result.push_back(token);
token = "";
}
result.push_back("||");
index += 2;
}
else { //구분자가 아닐때
token += input[index];
index++;
}
}
//마지막 토큰이 있을때
if (token.size() > 0) {
result.push_back(token);
}
for (int i = 0; i < result.size(); i++) {
cout << result[i] << " ";
}
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 16965번 : 구간과 쿼리 (1) | 2023.10.13 |
---|---|
[백준/BOJ] 백준 25601번 : 자바의 형변환 (0) | 2023.10.13 |
[백준/BOJ] 백준 2037번 : 문자메시지 (1) | 2023.10.13 |
[백준/BOJ] 백준 21922번 : 학부 연구생 민상 (0) | 2023.10.13 |
[백준/BOJ] 백준 2232번 : 지뢰 (0) | 2023.10.13 |