https://school.programmers.co.kr/learn/courses/30/lessons/120892
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ cipher의 길이 ≤ 1,000
- 1 ≤ code ≤ cipher의 길이
- cipher는 소문자와 공백으로만 구성되어 있습니다.
- 공백도 하나의 문자로 취급합니다.
입출력 예

입출력 예 설명
입출력 예 #1
- "dfjardstddetckdaccccdegk" 의 4번째, 8번째, 12번째, 16번째, 20번째, 24번째 글자를 합친 "attack"을 return합니다.
입출력 예 #2
- "pfqallllabwaoclk" 의 2번째, 4번째, 6번째, 8번째, 10번째, 12번째, 14번째, 16번째 글자를 합친 "fallback"을 return합니다.
문제 접근
1. 예를 들어, chiper(문자열) 길이가 24고, code=4면, 배수 번째 글자만 따왔을 때, 출력되는 문자열의 길이는 24 / 4 = 6이어야함
-> 그럼 배수 번째 문자열만 찝어내는 총 횟수도 len(cipher) // code
-> 대신 문자열은 0번째부터 시작이므로 4, 8, 12번째 문자를 뽑으려면, 사실상 2, 7, 11번째를 뽑아야 함
-> 4의 1배, 2배, 3배... 이건 i배로 대체해서 i에 대한 for in range를 걸어줌, 대신 range의 범위는 len(cipher) // code + 1이어야함
2. 뽑아낸 문자들을 다 합쳐서 출력할 수 있도록 join 사용 -> 공백 없이
최종 코드
def solution(cipher, code):
len2 = len(cipher)//code + 1
return "".join(cipher[i*code-1] for i in range(1, len2))
* 더 깔끔하게 작성하고 싶은데, 입출력 예시에 대입하면서 코드를 덧붙이다보니 이렇게됨
* 다른 사람 풀이 참고
def solution(cipher, code):
return cipher[code-1::code]
왜 이생각 못했을깝숑..
'Python > 프로그래머스 풀이' 카테고리의 다른 글
| 프로그래머스 python3 - 주사위의 개수 (0) | 2025.09.23 |
|---|---|
| 프로그래머스 python3 - 개미 군단 (0) | 2025.09.22 |
| 프로그래머스 python3 - 옷가게 할인 받기 (0) | 2025.09.22 |
| 프로그래머스 python3 - 머쓱이보다 키 큰 사람 (0) | 2025.09.22 |
| 프로그래머스 python3 - 배열 원소의 길이 (0) | 2025.03.31 |