관리 메뉴

log.Sehee

TIL / 4/10 / 프로그래머스 - 암호해독 본문

TLC - 5 ⛺/Today I Learn

TIL / 4/10 / 프로그래머스 - 암호해독

Sehe_e 2023. 4. 11. 02:19

문제

 

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번째 값이 떠올라 금방 머리를 맞대고 풀어낼 수 있었다. 항상 느끼지만 혼자 풀 때 보다 함께 문제를 풀어나갈 때가 더욱 잘 풀리고 사회성도 좋아지는 ㅎㅎ.. 그런 느낌이다. 매번 시행착오를 겪으면서 함수에 익숙해지는 기분이다

다음번에는 막힘없이 함수를 떠올릴 수 있기를..

Comments