728x90
반응형

문제 : https://codeup.kr/problem.php?id=1675

 

시저의 암호 1

암호학에서 시저 암호(Caesar cipher)는 가장 오래된 암호 중 하나이고, 가장 대표적인 대치(substitution) 암호로서 평문 문자를 다른 문자로 일대일 대응시켜 암호문을 만들어 낸다. 시저 암호는 알파�

codeup.kr

문제 설명   

암호학에서 시저 암호(Caesar cipher)는 가장 오래된 암호 중 하나이고, 가장 대표적인 대치(substitution) 암호로서 평문 문자를 다른 문자로 일대일 대응시켜 암호문을 만들어 낸다.

 

시저 암호는 알파벳을 3글자씩 밀려서 쓰면서 문장을 만들었다. 실제 시저는 부하인 브루투스에게 암살되기 전에 키케로에게 다음과 같은 암호문을 보냈다고 한다.

 

암호문

qhyhu wuxvw euxwxv

원문

never trust brutus

 

암호문을 원문으로 바꾸는 원리는 간단하다. 암호문에 쓰인 알파벳보다 3만큼 이동한 알파벳으로 치환하면 된다.

암호

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

 

원문

x

y

z

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

 

시저의 암호문이 입력되면 원문으로 복원하는 프로그램을 작성하시오.

 

 

[그림1] 입 출력 예제

 

 

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

int main()
{
	char str[201]; 
	int i;
	gets(str);
	
	for(i = 0; i<strlen(str); i++)
	{
		if(str[i] <= 'z' && str[i] >= 'a')
		{
			if(str[i] == 'a')
				str[i] = 'x';
			else if(str[i] == 'b')
				str[i] = 'y';
			else if(str[i] == 'c')
				str[i] = 'z';
			else if(str[i] == ' ')
				str[i] = ' ';
			else
				str[i] = str[i]-3;
		}	
		printf("%c",str[i]);
	}
	
	return 0;
}
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기