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을 통해 문자열을 하나로 합친다.
출처 : 눈떠보니 코딩테스트 전날 (인프런)
'Dev. Etc > Algorithm' 카테고리의 다른 글
[알고리즘] JAVA독과 함께! - python (0) | 2021.09.02 |
---|---|
[Python] 백준 알고리즘 11021번 문제풀이 (A+B - 7) (0) | 2021.05.13 |
[Python] 백준 알고리즘 2163번 문제풀이 (초콜릿 자르기) (0) | 2021.05.08 |
[Python] 백준 알고리즘 3046번 문제풀이 (R2) (0) | 2021.05.07 |
[Python] 백준 알고리즘 2588번 문제풀이 (곱셈) (0) | 2021.05.06 |
[Python] 백준 알고리즘 10430번 문제풀이 (나머지) (0) | 2021.05.05 |
[오라클] 프로그래머스 59035번 문제풀이 (역순 정렬하기) (0) | 2021.04.30 |
[오라클] 프로그래머스 59034번 문제풀이 (모든 레코드 조회하기) (0) | 2021.04.29 |