목록알고리즘 (127)
500error
문제 핸드폰 화면에 문구를 출력해주는 전광판 어플이 있습니다. 문구는 "happy-birthday"로 설정하였습니다. 전광판 어플은 다음과 같은 규칙으로 화면에 문구를 출력해 줍니다. 어플은 화면에 14자 문구를 출력합니다. 문구는 1초에 왼쪽으로 한 칸씩 움직입니다. 문구 이외의 부분은 "_"로 표시됩니다. 어플은 설정한 문구를 화면에 반복해 출력합니다. 어플은 문구가 다 지나가면 설정한 문구를 반복해 보여줍니다. 예를 들어, 처음에는 화면에 "______________"가 보입니다. 3초 뒤에는 화면에 "___________hap"가 보입니다. 14초 뒤에는 화면에 "happy-birthday"가 보입니다. 20초 뒤에는 화면에 "birthday_____"가 보입니다. 28초 뒤에는 모든 문자열이 지..

문제 두 문자열 s1과 s2를 붙여서 새 문자열을 만들려 합니다. 이때, 한 문자열의 끝과 다른 문자열의 시작이 겹친다면, 겹치는 부분은 한 번만 적습니다. 예를 들어 s1 = "ababc", s2 = "abcdab"일 때, 아래와 같이 s1 뒤에 s2를 붙이면 새 문자열의 길이는 9입니다. 그러나 s2 뒤에 s1을 붙이면 새 문자열의 길이는 8로, 더 짧게 만들 수 있습니다. 두 문자열 s1과 s2가 매개변수로 주어질 때, s1과 s2를 붙여서 만들 수 있는 문자열 중, 가장 짧은 문자열의 길이를 return 하도록 solution 함수를 완성해주세요. 코드 def solution(s1, s2): answer = 0 for i in range(len(s1)): if s1[0:i] == s2[-i:]: ..

문제 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 예를 들어, "aba"는 팰린드롬이며 "abccca"는 팰린드롬이 아닙니다. 어떤 문자열의 부분 문자열 중 팰린드롬인 문자열이 여럿일 수 있습니다. 이 중 k번째로 큰 팰린드롬을 알고 싶습니다. k번째로 큰 팰린드롬이란, 모든 팰린드롬을 사전 순으로 나열했을 때 k번째에 위치하는 팰린드롬을 뜻합니다. 이를 위해 다음과 같이 프로그램 구조를 세웠습니다. 1. 팰린드롬 문자열을 저장할 배열 palindromes를 선언합니다. 2. 주어진 문자열의 모든 부분 문자열을 찾아 다음을 수행합니다. 2-1. 부분 문자열이 팰린드롬 문자열인지 확인하고, 팰린드롬 문자열이라면 palindromes에 같은 문자열이 이미 들어있는지 확인합니다..

문제 정수로 이루어진 두 배열 arrA와 arrB가 주어질 때, arrA를 회전해 arrB로 만들 수 있는지 알아보려 합니다. 배열의 회전이란 모든 원소를 오른쪽으로 한 칸씩 이동시키고, 마지막 원소는 배열의 맨 앞에 넣는 것을 말합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다. 1. arrA와 arrB의 길이가 다르면 false를 return 합니다. 2. 두 배열의 구성 성분이 달라 회전했을 때 같아질 가능성이 없다면 false를 return 합니다. 3. arrA 배열을 두 번 이어 붙여 길이가 2배인 배열로 만듭니다. 4. arrA의 부분 배열 중 arrB와 같은 배열이 있으면 true를, 그렇지 않으면 false를 return 합니다. 배열 arrA와 arrA의 길이 arrA_len..