문제
당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면
해독된다는 것을 발견했다.
이 암호를 해독하는 프로그램을 작성하시오.
입력
한 줄에 하나의 암호가 주어진다. 암호의 길이는 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로 바꿔줘야한다.
그리고 반목문을 이용해 거꾸로 출력해주면된다.
'PS > 백준' 카테고리의 다른 글
백준 / 기본 수학 1 / 1712번 / 손익분기점 / C++ (0) | 2021.07.13 |
---|---|
백준 / String(문자열) / 10988번 / 팰린드롬인지 확인하기 / C (0) | 2021.02.27 |
백준 / String(문자열) / 1032번 / 명령 프롬프트 / C (0) | 2021.02.27 |
백준 / String(문자열) / 10798번 / 세로읽기 / C (0) | 2021.02.27 |