Search
Duplicate

단어 뒤집기 2

주차
19
문제번호
17413
언어
C++
티어
실버
유형
자료구조
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

로직 설명

'<'를 만나면 반드시 '>'가 나오기 때문에 이 조건에 맞춰서 바로 출력합니다.
공백 또는 널 문자를 만나기 전까지 단어를 저장해 두고, 만나는 순간 역순으로 출력합니다.

Code

제출 날짜

@5/7/2021

메모리

2476 KB

시간

0 ms
#include <iostream> #include <cstring> char word[100001]; std::string ans; void io_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { io_faster(); std::cin.getline(word, 100001); } void solve() { int i = -1; while (word[++i]) ; int w_size = i; i = -1; ans = ""; std::string save = ""; while (++i <= w_size) { if (save.size() > 0 && (i == w_size || word[i] == ' ' || word[i] == '<')) { for (int j = save.size() - 1 ; j >= 0 ; j--) ans+=save[j]; save = ""; if (word[i] == ' ') { ans += word[i]; continue; } if (i == w_size) break; } if (word[i] == '<') { ans+=word[i]; while(word[++i] != '>') ans+=word[i]; ans+=word[i]; } else save+=word[i]; } } void print_val() { std::cout << ans; } int main() { input(); solve(); print_val(); return (0); }
C++
복사