본문 바로가기

코딩 테스트/프로그래머스

[Python] 프로그래머스 lv.0 세로 읽기

 

문제 분석

  • 문자열 my_string
  • 정수 m,c
  • my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return

 

코드 설계

  • my_string // m 만큼 쪼개서 반복 (한 줄에 m씩 들어간다면 총 줄이 되는가)
  • 해당 줄에서 [i*m : i*m + m] 만큼의 문자열 str = [ ] 에 저장
  • 저장한 str의 c번째 열들에 대해서 ([ i ][ c ]) answer에 더한 뒤 return

 

정답 코드

def solution(my_string, m, c) :
    answer = ''
    str = []

    for i in range(len(my_string)//m):
        str.append(my_string[i*m : i*m + m])

    for i in range(len(str)) :
        answer += str[i][c-1]

    return answer

 

다른 사람 풀이 1

def solution(my_string, m, c) : 
	return my_string[c-1, m]
  • m : 간격을 지정하는 정수
  • c : 시작 위치를 나타내는 정수
  • python 슬라이싱 : s[start : end : step]
    • start : c-1
    • end : 지정 x == 끝까지 탐색
    • step = m : m의 간격으로 요소 검색
  • 주어진 문자열(리스트)에서 시작 인덱스 c-1부터 m간격으로 선택하여 반환