본문 바로가기

Algorithm/programmers(python)

[programmers] qrcode, 181903

반응형

문제 설명

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

더보기

제한사항

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

입출력 예

입출력 예시
입출력 예시

입출력 예 설명

입출력 예 #1

  • 예제 1번의 q와 r은 각각 3, 1이고 인덱스와 그 값을 q로 나눈 나머지가 잘 보이도록 표로 만들면 다음과 같습니다.
입출력 예 #1
입출력 예 #1

       q로 나눈 나머지가 1인 인덱스의 문자들을 앞에서부터 순서대로 이어 붙이면 "jerry"가 되므로 이를 return 합니다.

 

입출력 예 #2

  • 예제 2번의 q와 r은 각각 1, 0이고 인덱스와 그 값을 q로 나눈 나머지가 잘 보이도록 표로 만들면 다음과 같습니다.
입출력 예 #2
입출력 예 #2

       q로 나눈 나머지가 1인 인덱스의 문자들을 앞에서부터 순서대로 이어 붙이면 "programmers"가 되므로 이를 return 합니다.

 

풀이 1 (실패)

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

    for i in range(len(code) // q):
        answer += code[r + q * n]
        n += 1

    return answer

 

=> 테스트케이스 7개 실패

=> 반례 : q = 3, r = 1, code = "qjnwezgrpirldywtl" 이라면, 답은 "jerryl"이어야 하는데 "jerry"가 나옴.

풀이 2 (실패)

def solution(q, r, code):
    answer = ''
    if r == 0:
        return code
    else:
        return code[r::q]

 

=> 테스트케이스 3개 실패

=> 반례 : q = 6, r = 0, code = "repeat" 라면, 답은 "r"이어야 하는데, "repeat"가 나옴.

풀이 3 (풀이 2에서 코드 변경)

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

 

 

풀이 4

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

 

 

반응형