https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

 

간단한 단어 뒤집기다. 

뛰어쓰기가 나오면, 각 나온 단어를 뒤집는 것이다. 

예를 들어

 hi, my id is iridescent.

ih, ym di si tnecsediri.

이렇게 바꾸는 것이다.

 

 


알고리즘 생각은 매우 간단했다. 

알고리즘

1. 먼저, 테스트 케이스를 받고

2. 입력 버퍼를 지운다.

    2-1) i-1의 자리가 \n일때 까지 돌린다. (왜냐하면 \n를 만나는 것과 " "만나는 것을 한꺼번에 처리하기 위해서다)

    2-2) 현재 자리가 빈칸이거나 \n자리이면

        a) 현재자리 -1 부터 (현재자리가 개행문자이기 때문) top까지(top은 출력했던 자리 표시) 출력한다.

        b) top의 자리는 현재자리로 새로 갱신해준다.     


 

#include<stdio.h>

int main() {
	char input[1001];
	int top = -1;
	int testcase;

	scanf("%d", &testcase);
	getchar();
	while (testcase--) {
		fgets(input, 1001, stdin);
		for (int i = 0; input[i-1]!='\n' ; i++) {
			if (input[i] == ' ' || input[i] == '\n') {
				for (int j = i-1; j > top; j--) {
					printf("%c", input[j]);
				}
				top = i;
				printf(" ");
			}
		}
		printf("\n");
		top = -1;
	}
	return 0;
}

 

'Coding Test > Problem_solving' 카테고리의 다른 글

[백준] 1874_스택 수열  (0) 2021.02.18
[백준] 9012_괄호  (0) 2021.02.18
[백준] 4948_베르트랑 공준  (0) 2021.02.14
[백준]1929_소수 구하기  (0) 2021.02.13
[백준]2581_소수  (0) 2021.02.12

+ Recent posts