log.Sehee
TIL / 4/10 / 프로그래머스 - 암호해독 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120892
암호화 된 문자열 cipher 중 code의 배수 번째 글자만 진짜 암호이다.
문자열 cipher, 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 함수를 완성하시오.
시도
1. 문자열을 리스트에 넣어서 순서대로 출력 > 문자에 배열로 번호를 매김
2. code의 배수마다 리스트 속 원소를 출력하기 > for문 사용
3. 원소의 인덱스는 0부터 세어지는 것 주의, 리스트로 출력한 뒤 문자열로 합쳐서 출력하는 것에 주의
해결
def solution(cipher, code):
num_list = []
list_cipher = list(cipher)
for i in range(code-1 ,len(list_cipher), +code):
num = list_cipher[i]
num_list.append(num)
result = "".join(num_list)
return result
문자열을 list에 담아 range함수를 사용하여 code의 배수만의 문자를 구한다.
for문으로 배열 속 code의 배수값들을 뽑아낸 뒤 빈 리스트에 담아 join 함수를 사용해 하나의 문자열로 합친다.
- range(최솟값, 최댓값, 최솟값과 최댓값 사이 반복적인 합 또는 차의 값)
위 코드에서는 리스트의 배열이 0부터 출력되기에 code의 값에 -1을 해준 뒤 문자열의 갯수를 세어 최댓값으로 넣어주었다.
그 후 code의 값만큼 더하면서 갯수를 세어주어 결과적으로 code의 배수의 인덱스만을 출력하게 된 것.
> 조건은 배수였지만 덧셈을 썼다고 생각하면 쉽다.
배운 점
처음에는 range의 괄호 속 조건이 두 개 이상이였다는 것이 기억이 안났어서 count를 세면서 for문을 돌리고, cord에 곱하면서 배수를 세고, 별 짓을 다했지만 팀원이 아이디어를 제공해주니 range의 3번째 값이 떠올라 금방 머리를 맞대고 풀어낼 수 있었다. 항상 느끼지만 혼자 풀 때 보다 함께 문제를 풀어나갈 때가 더욱 잘 풀리고 사회성도 좋아지는 ㅎㅎ.. 그런 느낌이다. 매번 시행착오를 겪으면서 함수에 익숙해지는 기분이다
다음번에는 막힘없이 함수를 떠올릴 수 있기를..