출처 : 반크_백제역사 유적지구와 이스탐블역사 유적지구
문제]
타이핑을 하다 보면 키보드에서 양손을 모두 원래 위치보다 오른쪽으로 한 칸 이동한 상태에서 키를 눌러서 오타가 나오는 경우가 종종 있다. 그러면 'Q'는 'W', 'J'는 'K' 같은 식으로 오른쪽에 있는 키가 입력된다. 이런 식으로 입력된 메시지가 주어졌을 때 원래 메시지로 복구시켜야 하는 임무가 주어졌다.
입력
입력은 여러 줄의 텍스트로 구성된다. 각 줄에는 숫자, 스페이스, 대문자('Q', 'A', 'Z' 제외), 위에 나와있는 구두 기호(역 따옴표 '`' 제외)가 들어갈 수 있다. 단어가 붙어있는 키(Tab, BackSp, Control 등)는 입력에 들어있지 않다.
출력
위에 나와있는 QWERTY 키보드를 기준으로 하여 각 글자나 기호를 바로 왼쪽에 있는 키에 해당하는 글자나 기호로 바꿔야 한다. 입력에 있는 스페이스는 그대로 둔다.
입력 예
O S, GOMR YPFSU/
출력 예
I AM FINE TODAY.
출처]
Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제 17 WERTYU p96
참고풀이]
#include <stdio.h>
#include <string.h>
const char *KeyBoard[4]={"`1234567890-=", "QWERTYUIOP[]\\",
"ASDFGHJKL;", "ZXCVBNM,./"};
int main()
{
int i,j,k;
int chk;
char Str[500];
while(!feof(stdin))
{
if(!gets(Str)) break;
for(i=0;i<strlen(Str);i++)
{
chk=0;
if(Str[i]==' ')
putchar(' ');
else
{
for(j=0;j<4;j++)
{
for(k=1;k<strlen(KeyBoard[j]);k++)
if(KeyBoard[j][k]==Str[i])
{
putchar(KeyBoard[j][k-1]);
chk=1;
break;
}
if(chk) break;
}
}
}
putchar('\n');
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 209제] NCP Lv3 이항 계수 1 (0) | 2025.01.04 |
---|---|
C언어 208제] 비토와 친척들(Vito's Family) (0) | 2025.01.02 |
C언어 206제] 2007년 한국정보올림피아드 지역본선 초등부 2번 색종이 (0) | 2024.12.30 |
C언어 205제] 2013년 한국정보올림피아드 지역본선 초등부 2번 덩치 (0) | 2024.12.30 |
C언어 204제] 암호 깨기 II(Crypt Kicker II) (1) | 2024.12.26 |
댓글