[COS Pro 1급 Python] 3차 기출문제 5) 전광판 문구 출력

정은·2023년 8월 12일

COS Pro 1급

목록 보기
23/26
post-thumbnail

문제 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 합니다.


예시
phrasessecondreturn
"happy-birthday"3"___hap"

예시 설명

화면 처음상태인 "__"에서 3초가 지나면 화면에는 글자 3개가 왼쪽으로 옮겨진 상태인 "___hap"가 보입니다.

주어진 문제 5) 코드

# 다음과 같이 import를 사용할 수 있습니다.
# import math

def solution(phrases, second):
    # 여기에 코드를 작성해주세요.
    answer = ''
    return answer

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

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

Solution

주어진 문제 5) Solution 코드

이번엔 빈칸 채우기 문제가 아니라 함수 전체를 작성하는 문제이다.

# 다음과 같이 import를 사용할 수 있습니다.
# import math

def solution(phrases, second):
    answer = '______________' + phrases
    additional = ''

    if second + 14 > len(answer):
        additional = "_" * (second + 14 - len(answer))

    return answer[second:second + 14] + additional

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

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

해당 문제는 14자까지 표시하는 화면에 '__'으로 시작하여 'happy-birthday'의 문자를 1글자씩 왼쪽으로 표시하고, 모든 문자를 표시한 뒤에서 다시 '__'부터 시작하여 한 글자씩 나타내도록 프로그램을 구성해야하는 문제이다.

다른 문제 풀이 방식

1초마다 회전하여 보여주는 방식

28개의 문자가 회전하며 나타나기 때문에 for 문의 반복횟수를 second → second % 28 로 바꿔 사용하는 것이 더 효과적이다.

# 다음과 같이 import를 사용할 수 있습니다.
# import math

def solution(phrases, second):
    # 여기에 코드를 작성해주세요.
    answer = ''
    display = "_" * 14 + phrases # 1. 문구 앞에 14개의 "_"를 붙인다.
    for i in range(second):
        display = display[1:] + display[0] # 2. 해당 초 수 만큼 맨 앞의 글자를 맨 뒤로 옮긴다. (회전 시킨다.)

    answer = display[:14] # 3. 맨 앞에서부터 14개의 글자를 전광판에 보여준다.
    return answer

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

#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
profile
정니의 이런거 저런거 기록 일지 😛

0개의 댓글