파게로그
[백준 17413번] 단어 뒤집기 2 본문
문제 링크: 17413번 단어 뒤집기 2
https://www.acmicpc.net/problem/17413
문제에서 시키는 대로 한다. string1
은 입력 문자열이고, string2
는 입력 문자열이며 idx1
은 string1
에 대한 인덱스이고, idx2
는 string2
에 대한 인덱스이다. 다른 것보다 인덱스를 일관되게 유지한는 것이 중요하다. 즉 예를 들어서 idx2
가 마지막 문자의 위치를 가리키고 있는지, 또는 새로운 문자가 삽입될 위치를 가리키고 있는지를 섞어서 사용하면 안 되는 것이다. plain text, 즉 공백 사이에 있거나 문장의 처음이나 마지막에 있으며 태그가 아닌 '단어'의 경우 start
와 end
인덱스를 별도로 설정해 단어의 시작과 끝을 알아낸다. 그 후 다시 끝에서부터 시작까지 거꾸로 string1
을 string2
로 복사해주면 된다.
#include <stdio.h>
#define MAX_LEN 100001
char string1[MAX_LEN];
char string2[MAX_LEN];
int idx1 = 0;
int idx2 = 0;
int main(void) {
gets(string1);
char cur;
while (1) {
cur = string1[idx1++];
// EOF
if (cur == '\0') {
string2[idx2] = '\0';
break;
}
if (cur == '<') { // tag
while (cur != '>') {
string2[idx2++] = cur;
cur = string1[idx1++];
}
string2[idx2++] = cur;
} else if (cur == ' ') { // space
string2[idx2++] = ' ';
}
else { // plain text
int start = idx1 - 1;
int end = idx1 - 1;
while (cur != ' ' && cur != '\0' && cur != '<') {
cur = string1[++end];
}
end--;
for (int j = end; j >= start; j--) {
string2[idx2++] = string1[j];
}
idx1 = end + 1;
}
}
printf("%s", string2);
}
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 2346번] 풍선 터뜨리기 (0) | 2021.04.13 |
---|---|
[백준 2840번] 행운의 바퀴 (0) | 2021.04.13 |
[백준 12015번] LIS(최장 증가 부분 수열) 이분탐색 (0) | 2021.04.07 |
[백준 11053번] LIS(최장 증가 부분 수열) DP (0) | 2021.04.07 |
[백준 17298번] 오큰수 (0) | 2021.03.30 |
Comments