Dev. Etc/Algorithm
[알고리즘] 암호를 해독해라 - python
재테크하는 개발자
2021. 8. 31. 18:59
Q. 모든 알고리즘을 해독할 수 있는 알고리즘 7 원석를 보유한 알고리즘 제왕 파이와 썬은 죽기 전, 이 보물에 '암호'를 걸어 세계 어딘가에 묻어놨다고 공표하였다. 그가 남긴 문자는 아래와 같다.
섬으로 향하라!
' + -- + - + - '
' + --- + - + '
' + -- + - + - '
' + - + - + - + '
해(1)와 달(0),
Code의 세상 안으로!(En-Coding)
A.
array = [' + -- + - + - ',
' + --- + - + ',
' + -- + - + - ',
' + - + - + - + '
];
s = [i.strip().replace(' ','').replace('+','1').replace('-','0') for i in array ]
list = list(map(lambda x: chr(int(x,2)), s))
result = ''.join(list);
print(result);
풀이 : +는 1 / -는 0으로 생각하고 문제를 접근한다.
array 변수에 암호를 해독할 값을 넣어주고 배열에 각 인자를 i라고 지정하고 strip을 통해 앞뒤 공백을 모두 제거해준다.
제거된 공백의 값을 replace를 통해 그안에 띄워쓰기 공백을 제거해주고, +는 1로 -는 0으로 변경해준다.
"1001010"이라는 값으로 모두 치환되어 나온 변수가 s이다.
s변수를 map함수의 첫번째 인자에 함수를 넣어주고, 두번째 인자에 배열을 넣어준다.
첫번쨰 인자 함수에는 람다를 사용해서 s 배열의 인덱스 0부터 끝까지 하나씩 대입해 2진법으로 변경해준다음 문자열로 변경해준다. 변경된 값을 모두 list에 담아준다.
join을 통해 문자열을 하나로 합친다.
출처 : 눈떠보니 코딩테스트 전날 (인프런)