본문 바로가기

Algorithm/프로그래머스

[Python] [코딩 기초 트레이닝] / qr code

[문제 설명]

두 정수 q, r과 문자열 code가 주어질 때, code의 각 인덱스를 q로 나누었을 때 
나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을
return 하는 solution 함수를 작성해 주세요.


[제한사항]

1. 0 ≤ r < q ≤ 20
2. r < code의 길이 ≤ 1,000
3. code는 영소문자로만 이루어져 있습니다.

 

def solution(q, r, code):
    answer = ''
    return answer

 

 

[A] (내가 쓴 답)

def solution(q, r, code):

    new_idx = []
    answer = ""

    for idx in range(len(code)) :
        if idx % q == r :
            new_idx.append(idx)

    for i in new_idx :
        tmp = code[i]
        answer += tmp

    return answer

 

 

[A] 다른 답들

def solution(q, r, code):
    return code[r::q]

* 설명 :  index = x * q + r 임을 알 수 있고, 우리가 필요한 index는 [0q+r, 1q+r, 2q+r... xq+r]입니다.

  즉 [r, q+r, 2q+r... xq+r]임을 알 수있고, r로 시작해서 q씩 커지는 index만 가져오면 됩니다.

 

def solution(q, r, code):
    answer = ''
    for i in range(len(code)):
        if i % q == r:
            answer += code[i]
    return answer

 

def solution(q, r, code):
    answer = ''
    
    for idx, val in enumerate(code):
        if idx % q == r:
            answer += val
    
    return answer