PS/백준

백준 / String(문자열) / 11365번 / !밀비 급일 / C

KimMinJun 2021. 2. 27. 14:56

문제

당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면

해독된다는 것을 발견했다.

이 암호를 해독하는 프로그램을 작성하시오.

입력

한 줄에 하나의 암호가 주어진다. 암호의 길이는 500을 넘지 않는다.

마지막 줄에는 "END"가 주어진다. (END는 해독하지 않는다.)

출력

각 암호가 해독된 것을 한 줄에 하나씩 출력한다.

예제 입력 1

!edoc doog a tahW

noitacitsufbo erafraw enirambus detcirtsernu yraurbeF

fo tsrif eht no nigeb ot dnetni eW

lla sees rodroM fo drol eht ,ssertrof sih nihtiw delaecnoC

END

예제 출력 1

What a good code!

obfustication

We intend to begin on the first of February unrestricted submarine warfare

Concealed within his fortress, the lord of Mordor sees all

 

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 500

int main() {
	char str[MAX_LENGTH];

	while (true) {
		fgets(str,MAX_LENGTH, stdin);
		str[strlen(str) - 1] = '\0';

		if (strcmp(str, "END") == 0)
			break;

		for (int i = strlen(str) - 1; i >= 0; i--) {
			printf("%c", str[i]);
		}
		printf("\n");
	}

	return 0;
}

거꾸로 출력해주는 간단한 문제처럼 보일 수 있지만,

중간에 공백이 껴있어서 gets나 fgets로 입력을 받아야 한다.

하지만 gets는 버퍼오버플로우가 발생할 수 있기 때문에 fgets를 쓰는 것을 추천한다.

 

그리고 fgets는 마지막의 개행문자(enter)까지 입력을 받기때문에, NULL로 바꿔줘야한다.

 

그리고 반목문을 이용해 거꾸로 출력해주면된다.