https://www.youtube.com/watch?v=_m7aGXWTYKU&list=PLnp1rUgG4UVb_5oT4tYaB4Sro-SBPJSWy&index=6 

 

Cos Pro 1급 3회 문제 5 - 구현

핸드폰 화면에 문구를 출력해주는 전광판 어플이 있습니다. 문구는 "happy-birthday"로 설정하였습니다. 전광판 어플은 다음과 같은 규칙으로 화면에 문구를 출력해 줍니다.

  • 어플은 화면에 14자 문구를 출력합니다.
  • 문구는 1초에 왼쪽으로 한 칸씩 움직입니다.
  • 문구 이외의 부분은 "_"로 표시됩니다.
  • 어플은 설정한 문구를 화면에 반복해 출력합니다.
  • 어플은 문구가 다 지나가면 설정한 문구를 반복해 보여줍니다.
  •   예를 들어, 처음에는 화면에 "______________"가 보입니다.
      3초 뒤에는 화면에 "___________hap"가 보입니다.
      14초 뒤에는 화면에 "happy-birthday"가 보입니다.
      20초 뒤에는 화면에 "birthday______"가 보입니다.
      28초 뒤에는 모든 문자열이 지나간 후 "______________"가 보입니다.
      29초 뒤에는 다시 첫 번째 문자부터 나타나며, "_____________h"가 보입니다.

문구를 담은 문자열 phrases와 초를 담은 second가 매개변수로 주어질 때, 화면에 보이는 문자열을 출력하도록 solution 함수를 작성해 주세요. 단, '_'는 공백을 나타냅니다.

▣ 매개변수 설명

문구를 담은 문자열 phrases와 초를 담은 second가 solution 함수의 매개변수로 주어집니다.

  • phrases는 "happy-birthday"입니다.
  • second는 1 이상 10,000 이하인 자연수입니다.

▣ return값 설명

solution 함수는 화면에 보이는 문자열을 return 합니다.

▣ 예시

| phrases          | second | return           |
|------------------|--------|------------------|
| "happy-birthday" | 3      | "___________hap" |

 

내 풀이

"______________happy-birthday" 이렇게 만들고 시간이 자나갈때마다 맨 앞에 있는걸 pop(0) 시켜서

뒤로 append 시켜준다

def solution(phrases, second):
    new_srt = list('_' * len(phrases) + phrases)
    print(new_srt)
    
    while second > 0 :
        print(second)
        new_srt.append(new_srt.pop(0))
        second -= 1
    return "".join(new_srt[:len(phrases)])

#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
phrases = "happy-birthday"
second = 3
ret = solution(phrases, second)

#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")

 

강사님 풀이

내 풀이와 같지만 문자열 슬라이스를 이용한다

맨 앞꺼는 맨 뒤로, 1번부터 끝까지 + 맨 앞꺼

def solution(phrases, second):
    new_srt = '______________' + phrases
    
    for _ in range(second) :
        new_srt = new_srt[1:] + new_srt[0]      #1번째부터 끝 + 0번째 다시 붙이기
    return new_srt[:14]

#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
phrases = "happy-birthday"
second = 3
ret = solution(phrases, second)

#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
[Cos Pro 1급] 3회 문제 5(전광판 어플, 한칸씩 밀기)