본문 바로가기

알고리즘119

[COS PRO 1급 #3-10] 밥 먹고 머리 자르고 문제설명 미용실과 레스토랑이 예약을 받는 기준은 다음과 같습니다. * 미용실 * 인원수가 1명인 경우에만 예약받습니다. * 다른 손님과 예약 시간이 겹칠 수 없습니다. * 레스토랑 * 인원수가 2명 이상 8명 이하인 경우에만 예약받습니다. * 최대 두 팀까지 예약 시간이 겹칠 수 있습니다. 두 가게에서 예약을 받은 횟수를 계산하기 위해 다음과 같이 Customer, Shop, HairShop, Restaurant 클래스를 작성했습니다. * Customer: * Customer : 고객을 나타내는 클래스입니다. * id : 고객 식별 번호를 나타냅니다. * time : 고객이 신청한 예약 시간을 나타냅니다. * num_of_people : 예약 인원 수를 나타냅니다. * Shop : * Shop : 가게를.. 2023. 2. 25.
[COS PRO 1급 #3-9] 팝업스토어를 열 최적의 날짜 문제설명 모 매장에서는 팝업스토어를 열려고 합니다. 팝업스토어란 한정 기간 문을 여는 매장입니다. 팝업스토어는 k일 동안 연속해서 열 예정입니다. n일 동안의 추정 매출액이 주어질 때, 언제 팝업스토어를 열어야 가장 매출이 높을지 알아보려 합니다. n일 간의 추정 매출액이 담긴 리스트 revenue와 팝업스토어를 열 날의 수 k가 매개변수로 주어질 때, 최대 매출액 합을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요. 매개변수 설명 추정 매출액이 담긴 리스트 revenue와 팝업스토어를 열 날의 수 k가 so.. 2023. 2. 25.
[COS PRO 1급 #3-8] 선풍기를 몇 대 사야 하나요 문제설명 교실에 선풍기가 4대 있습니다. 선풍기는 한 대당 학생 k명에게 바람을 보냅니다. 모든 학생에게 바람을 보내기 위해서 선풍기를 몇 대 더 구매해야 할지 구하려고 합니다. 예를 들어, 선풍기 한 대당 학생 3명에게 바람을 보낼 수 있을 때, 한 교실당 학생 수가 [15, 17, 19, 10, 23] 명이고 선풍기가 4대 있으면 교실당 학생 [3, 5, 7, 0, 11] 명을 위해 선풍기를 더 구매해야 합니다. 이때, 교실별로 선풍기가 [1, 2, 3, 0, 4] 대씩 더 필요하니 총 선풍기 10대를 추가로 구매해야 합니다. 선풍기가 바람을 보내는 학생 수 k와 교실별 학생 수가 담긴 리스트 student가 주어질 때, 선풍기를 최소 몇 대 사야 하는지를 return 하도록 solution 함수를 .. 2023. 2. 25.
[COS PRO 1급 #3-7] 카프리카 수 문제설명 카프리카 수는 다음을 만족하는 수를 뜻합니다. * 자신의 제곱수를 둘로 나누어 더한 값이 자기 자신과 같습니다. * 단, 둘로 나뉜 수는 모두 양수여야 합니다. 예를 들어, 55^2 는 3,025입니다. 3,025는 3과 025, 30과 25, 302와 5로 나눌 수 있습니다. 이때 30+25 = 55이므로 55는 카프리카 수입니다. 자연수 k가 매개변수로 주어질 때, k 이하인 모든 카프리카 수를 리스트에 담아 오름차순으로 정렬하여 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되었기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해 모든 입력에 대해 올바르게 동작하도록 수정해주세요. 매개변수 설명 자연수 k가 solu.. 2023. 2. 25.
[COS PRO 1급 #3-6] 소수의 합으로 표현하기 문제설명 어떤 수를 서로 다른 소수 3개의 합으로 표현하는 방법의 수를 구하려 합니다. 예를 들어 33은 총 4가지 방법으로 표현할 수 있습니다. 1. 3+7+23 2. 3+11+19 3. 3+13+17 4. 5+11+17 자연수 n이 매개변수로 주어질 때, n을 서로 다른 소수 3개의 합으로 표현하는 방법의 수를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요. ※ 1,000 이하인 소수는 168개 있습니다. 매개변수 설명 n이 solution 함수의 매개변수로 주어집니다. * n은 1,000 이하인 자연수입니다. return 값 설명 n을 서로 다른 소수 3개의 합으로 표현하는 방법의 수를 return 해주세요. * 만약, n을 서로 다른 소수 3개의.. 2023. 2. 25.
[COS PRO 1급 #3-5] 전광판 문구 출력 문제설명 핸드폰 화면에 문구를 출력해주는 전광판 어플이 있습니다. 문구는 "happy-birthday"로 설정하였습니다. 전광판 어플은 다음과 같은 규칙으로 화면에 문구를 출력해 줍니다. * 어플은 화면에 14자 문구를 출력합니다. * 문구는 1초에 왼쪽으로 한 칸씩 움직입니다. * 문구 이외의 부분은 "_"로 표시됩니다. * 어플은 설정한 문구를 화면에 반복해 출력합니다. * 어플은 문구가 다 지나가면 설정한 문구를 반복해 보여줍니다. ``` 예를 들어, 처음에는 화면에 "______________"가 보입니다. 3초 뒤에는 화면에 "___________hap"가 보입니다. 14초 뒤에는 화면에 "happy-birthday"가 보입니다. 20초 뒤에는 화면에 "birthday_____"가 보입니다. 2.. 2023. 2. 25.
[COS PRO 1급 #3-4] 중복 문자열 이어붙이기 문제설명 두 문자열 s1과 s2를 붙여서 새 문자열을 만들려 합니다. 이때, 한 문자열의 끝과 다른 문자열의 시작이 겹친다면, 겹치는 부분은 한 번만 적습니다. 예를 들어 s1 = "ababc", s2 = "abcdab"일 때, 아래와 같이 s1 뒤에 s2를 붙이면 새 문자열의 길이는 9입니다. 그러나 s2 뒤에 s1을 붙이면 새 문자열의 길이는 8로, 더 짧게 만들 수 있습니다. 두 문자열 s1과 s2가 매개변수로 주어질 때, s1과 s2를 붙여서 만들 수 있는 문자열 중, 가장 짧은 문자열의 길이를 return 하도록 solution 함수를 완성해주세요. 매개변수 설명 두 문자열 s1과 s2가 solution 함수의 매개변수로 주어집니다. * s1과 s2의 길이는 1 이상 100 이하입니다. * s1.. 2023. 2. 23.
[COS PRO 1급 #3-3] 비숍으로부터 도망쳐 문제설명 체스에서 비숍(Bishop)은 아래 그림과 같이 대각선 방향으로 몇 칸이든 한 번에 이동할 수 있습니다. 만약, 한 번에 이동 가능한 칸에 체스 말이 놓여있다면 그 체스 말을 잡을 수 있습니다. 8 x 8 크기의 체스판 위에 여러 개의 비숍(Bishop)이 놓여있습니다. 이때, 비숍(Bishop)들에게 _**한 번에**_ 잡히지 않도록 새로운 말을 놓을 수 있는 빈칸의 개수를 구하려고 합니다. 위 그림에서 원이 그려진 칸은 비숍에게 한 번에 잡히는 칸들이며, 따라서 체스 말을 놓을 수 있는 빈칸 개수는 50개입니다. 8 x 8 체스판에 놓인 비숍의 위치 bishops가 매개변수로 주어질 때, 비숍에게 한 번에 잡히지 않도록 새로운 체스 말을 놓을 수 있는 빈칸 개수를 return 하도록 solu.. 2023. 2. 23.
[COS PRO 1급 #3-2] 팰린드롬 문제 문제설명 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 예를 들어, "aba"는 팰린드롬이며 "abccca"는 팰린드롬이 아닙니다. 어떤 문자열의 부분 문자열 중 팰린드롬인 문자열이 여럿일 수 있습니다. 이 중 k번째로 큰 팰린드롬을 알고 싶습니다. k번째로 큰 팰린드롬이란, 모든 팰린드롬을 __사전 순__으로 나열했을 때 k번째에 위치하는 팰린드롬을 뜻합니다. 이를 위해 다음과 같이 프로그램 구조를 세웠습니다. ``` 1. 팰린드롬 문자열을 저장할 리스트 palindromes를 선언합니다. 2. 주어진 문자열의 모든 부분 문자열을 찾아 다음을 수행합니다. 2-1. 부분 문자열이 팰린드롬 문자열인지 확인하고, 팰린드롬 문자열이라면 palindromes에 같은 문자열이 이미 .. 2023. 2. 23.
[COS PRO 1급 #3-1] 배열을 회전시켜보세요 문제설명 정수로 이루어진 두 리스트 arrA와 arrB가 주어질 때, arrA를 회전해 arrB로 만들 수 있는지 알아보려 합니다. 리스트의 회전이란 모든 원소를 오른쪽으로 한 칸씩 이동시키고, 마지막 원소는 리스트의 맨 앞에 넣는 것을 말합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다. ~~~ 1. arrA와 arrB의 길이가 다르면 false를 return 합니다. 2. 두 리스트의 구성 성분이 달라 회전했을 때 같아질 가능성이 없다면 false를 return 합니다. 3. arrA 리스트를 두 번 이어 붙여 길이가 2배인 리스트로 만듭니다. 4. arrA의 부분 리스트 중 arrB와 같은 리스트가 있으면 true를, 그렇지 않으면 false를 return 합니다. ~~~ 두 리스트 ar.. 2023. 2. 21.
반응형