-
Baekjoon_17413_단어뒤집기2Algorithm/_Baekjoon 2023. 6. 6. 19:10
문제주소: https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
Python
Python에서는 string과 list를 사용하여 해결하였다.
import sys def main(): words: list = list(sys.stdin.readline().rstrip()) # 입력 string 선언 cur_word: list = [] n_start: int = 0 count: int = 0 while(count < len(words)): # count가 전체의 길이보다 작을때까지 반복 if (words[count] == "<"): # "<"를 만난다면 count += 1 while (words[count] != ">"): # ">"를 만날때까지 1씩증가 count += 1 count += 1 # 인덱스 1증가 elif (words[count].isalnum()): # 알파벳 혹은 숫자를 만난다면 n_start = count # 알파벳과 숫자거나 count가 전체의 길이보다 크거나 같지 않을때까지 반복 while (count < len(words) and words[count].isalnum()): count += 1 # 인덱스 길이만큼 잘라서 뒤집고 바꿔줌 cur_word = words[n_start:count] cur_word.reverse() words[n_start:count] = cur_word else: # 공백일경우 1증가 count += 1 print(''.join(words)) if __name__ == "__main__": main()
C++
C++에서는 deque를 사용하여 해결하였다.
#include <iostream> #include <deque> #include <algorithm> using namespace std; int main(void) { ios::sync_with_stdio(0); cout.tie(0), cin.tie(0); int count=0; string my_str; deque<char> my_que; deque<char> my_rev; getline(cin, my_str); // string으로 받은 값을 deque에 넣음 for(auto ele : my_str) my_que.push_back(ele); // my_que가 빌때까지 반복 while(!my_que.empty()) { if(my_que.front() == '<') // my_que의 첫번째가 '<'라면 { for (auto ele : my_que) { cout << my_que.front(); my_que.pop_front(); if (my_que.front() == '>') // '>'까지 출력을 반복 { cout << my_que.front(); my_que.pop_front(); break; } } } else if (isalnum(my_que.front())) // 알파벳과 숫자라면 { while(true) { // my_rev로 알파벳과 숫자를 옮기고 my_que의 첫번째가 알파벳과 숫자가 아니라면 if (!isalnum(my_que.front()) or my_que.empty()) // my_rev를 뒤집어서 출력 { reverse(my_rev.begin(), my_rev.end()); for (auto ele : my_rev) { cout << ele; } my_rev.clear(); break; } my_rev.push_back(my_que.front()); my_que.pop_front(); } } else // 띄어쓰기일 경우 다음과 같이 출력 { cout << my_que.front(); my_que.pop_front(); } } }
'Algorithm > _Baekjoon' 카테고리의 다른 글
Baekjoon_10866_덱 (0) 2023.05.24 Baekjoon_1158_요세푸스 문제 (0) 2023.05.24 Baekjoon_10845_큐 (0) 2023.05.18 Baekjoon_1406_에디터 (0) 2023.05.17 Baekjoon_1874_스택 수열 (0) 2023.05.15