jcoding2601 / jcoding

0 stars 0 forks source link

[COS PRO Python 1급] 4회차 #10

Open jcoding2601 opened 2 hours ago

jcoding2601 commented 2 hours ago

문제1

어떤 단어가 XX 사전의 몇 번째 단어인지 알고 싶습니다. XX 사전에는 대문자 알파벳 'A', 'E', 'I', 'O', 'U'를 사용해 만들 수 있는 길이가 5 이하인 모든 단어가 수록되어 있습니다.

예를 들어, 사전의 첫 번째 단어는 "A"이고, 그다음은 "AA"입니다. 마지막 단어는 "UUUUU"입니다.

문자열 word가 매개변수로 주어질 때, word가 사전의 몇 번째 단어인지 return 하도록 solution 함수를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _한 줄_만 수정해야 합니다.


매개변수 설명

문자열 word가 solution 함수의 매개변수로 주어집니다.


return 값 설명

사전에서 word가 몇 번째 단어인지 return 해주세요.


예시
word return
"AAAAE" 6
"AAAE" 10
예시 설명

사전엔 단어가 다음과 같이 수록됩니다. "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU", "AAAE", ...

예시 #1 "AAAAE"는 여섯 번째에 나옵니다.

예시 #2 “AAAE”는 열 번째에 나옵니다.

문제2

알파벳 소문자와 대문자로 구성된 문자열을 압축하려 합니다. 압축이란 대표 문자와 대표 문자가 연속되는 개수를 함께 표현하는 것입니다. 이때, 대문자와 소문자는 구분하지 않으며, 대표 문자는 소문자로 표현합니다.

예를 들어, 문자열 "YYYYYbbbBbbBBBMmmM"을 압축하면 "y5b9m4"입니다.

문자열 s가 매개변수로 주어질 때, s를 압축한 문자열을 return 하도록 solution 함수를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _한 줄_만 수정해야 합니다.


매개변수 설명

문자열 s가 solution 함수의 매개변수로 주어집니다.


return 값 설명

s를 압축한 결과를 return 해주세요.


예시
s return
"YYYYYbbbBbbBBBMmmM" "y5b9m4"
예시 설명

예시 #1 문제의 예와 같습니다.

문제3

정확히 n 일 연속으로 스키장 이용하는데 필요한 최소 비용을 계산하려 합니다. 다음은 스키장에서 판매하는 이용권입니다.

이용권 종류 스키장을 사용할 수 있는 일수 가격
one_day 구매한 날 하루 동안 사용 가능 one_day_price
multi_day 구매한 날부터 multi_day일간 사용 가능 multi_day_price

예를 들어 one_day_price = 3, multi_day = 5, multi_day_price = 14라면, 1일 이용권은 3원, 5일 이용권은 14원입니다. n = 6일 때 정확히 6일 연속으로 스키장을 이용하는데 필요한 비용은 다음과 같이 계산합니다.

따라서 정확히 6일 연속 스키장을 이용하려면 최소 17원이 듭니다. ※ 스키장을 정확히 6일간 이용해야 하므로 5일 이용권을 두 장 살 수는 없습니다.

solution 함수의 매개변수로 one_day_price, multi_day, multi_dayprice, n가 주어집니다. 이때 정확히 n일 연속 스키장을 이용하는데 필요한 최소 금액을 계산해서 return 하도록 solution 함수를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 한 줄_만 수정해야 합니다.


매개변수 설명

one_day_price, multi_day, multi_day_price, n이 순서대로 solution 함수의 매개변수로 주어집니다.


return값 설명

정확히 n일 연속으로 스키장을 이용하는데 필요한 최소 금액을 return 해주세요.


예시
one_day_price multi_day multi_day_price n result
3 5 14 6 17
2 3 5 11 19
예시 설명

예시 #1 앞서 설명한 예와 같습니다.

예시 #2 1일 이용권은 2원, 3일 이용권은 5원입니다. 정확히 11일 동안 스키장을 이용할 때 드는 최소 비용은 다음과 같습니다.

문제4

마방진이란 가로, 세로, 대각선 방향의 수를 더한 값이 모두 같은 정사각형 행렬입니다. 마방진에는 1부터 정사각형 넓이까지, 수가 하나씩 배치되어야 합니다. 아래는 가로, 세로, 대각선 방향의 수를 더한 값이 모두 34인 4 x 4 마방진입니다.

KakaoTalk_Photo_2018-09-15-17-58-10.png

4 x 4 행렬의 두 빈칸을 채워 행렬을 마방진으로 완성하려 합니다. 빈칸은 0으로 표시합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. 두 빈칸의 위치를 찾습니다.
2. 숫자 1 ~ 16 중 존재하지 않는 숫자 2개를 찾습니다.
3. 첫 번째 빈칸에 작은 숫자를, 두 번째 빈칸에 큰 숫자를 넣어 행렬이 마방진이 되는지 검사합니다.
  4-1. 마방진이라면 [작은 숫자의 행 번호, 작은 숫자의 열 번호, 작은 숫자, 큰 숫자의 행 번호, 큰 숫자의 열 번호, 큰 숫자]를 return 합니다.
  4-2. 마방진이 아니라면 [큰 숫자의 행 번호, 큰 숫자의 열 번호, 큰 숫자, 작은 숫자의 행 번호, 작은 숫자의 열 번호, 작은 숫자]를 return 합니다.

4 x 4 크기 2차원 리스트 matrix가 매개변수로 주어질 때, 이때 빈칸의 위치와 각 칸에 들어갈 수를 담은 리스트를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작하도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.


매개변수 설명

2차원 리스트 matrix가 solution 함수의 매개변수로 주어집니다.


return 값 설명

빈칸의 위치와 각 칸에 들어갈 수를 담은 리스트를 return 해주세요.


예시
matrix return
[[16,2,3,13],[5,11,10,0],[9,7,6,12],[0,14,15,1]] [4,1,4,2,4,8]
예시 설명

예시 #1

KakaoTalk_Photo_2018-09-15-18-01-27.png

위 그림에서 빈칸은 (4, 1)과 (2, 4)입니다. 각 칸에 4와 8을 채우면 마방진이 완성됩니다. 따라서 [작은 숫자의 행 번호, 작은 숫자의 열 번호, 작은 숫자, 큰 숫자의 행 번호, 큰 숫자의 열 번호, 큰 숫자]를 return 해야 합니다. 답은 [4, 1, 4, 2, 4, 8]입니다.

KakaoTalk_Photo_2018-09-15-18-01-27 (1).png

문제5

다음과 같이 새로운 숫자를 생성할 때, n번째 생성할 숫자를 구하려고 합니다.

1. 첫 번째 수는 1입니다.
2. 다음수를 1의 자리에 추가합니다.
3. 만든 숫자를 뒤집습니다.
4. 숫자 1부터 9까지 추가하면서 2, 3번째 단계를 반복합니다.
5. 숫자 9까지 추가했다면 다시 숫자 1부터 추가합니다.

n이 매개변수로 주어질 때, n번째로 생성할 수를 문자열 형태로 return 하는 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 바르게 동작하도록 빈칸을 채워주세요.


매개변수 설명

숫자 n이 solution 함수의 매개변수로 주어집니다.


return값 설명

solution 함수는 n번째 수를 문자열 형태로 return 합니다.


예시
n return
5 "53124"

예시 설명

첫 번째 숫자: 1 두 번째 숫자: 21 세 번째 숫자: 312 네 번째 숫자: 4213 다섯 번째 숫자: 53124

따라서 답은 "53124"입니다.

문제6

어떤 자리 수 k가 주어졌을 때 각 자릿수의 k 제곱의 합이 원래 수가 되는 수를 자아도취 수라고 합니다. 예를 들어 153은 세 자리 자아도취 수입니다.

IMG

자연수 k가 매개변수로 주어질 때, k 자리 자아도취 수들을 리스트에 오름차순으로 담아 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

k가 solution 함수의 매개변수로 주어집니다.


return 값 설명

k 자리 자아도취 수를 오름차순으로 정렬한 뒤 리스트에 담아 return 합니다.


예시
k return
3 [153, 370, 371, 407]
예시 설명

문제7

게임에 몬스터, 전사, 힐러 세 종류의 유닛이 있습니다.

유닛들의 공격과 힐링에 따른 체력치의 변화를 계산하기 위해 아래와 같이 Unit, Monster, Warrior, Healer 클래스를 작성했습니다.

unit_cpp.png

게임에서 각 유닛들이 다음과 같이 행동 했을 때, 몬스터, 전사, 힐러의 남은 체력을 구하려 합니다.

몬스터의 공력력 monster_attack_point, 전사의 공격력 warrior_attack_point, 힐러의 회복치 healing_point가 매개변수로 주어질 때, 각 유닛이 행동을 마친 후 몬스터, 전사, 힐러의 남은 체력을 순서대로 리스트에 담아 return 하도록 solution 함수를 작성하려 합니다. 위 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.


매개변수 설명

몬스터의 공력력 monster_attack_point, 전사의 공격력 warrior_attack_point, 힐러의 회복치 healing_point가 solution 함수의 매개변수로 주어집니다.


return 값 설명

각 유닛이 문제에 주어진 행동을 마친 후 몬스터, 전사, 힐러의 남은 체력을 순서대로 리스트에 담아 return 해주세요.


예시
monster_attack_point warrior_attack_point healing_point return
100 90 30 [940, 930, 900]
예시 설명

몬스터가 전사와 힐러를 한 번씩 공격하면 각 유닛의 남은 체력은 다음과 같습니다.

몬스터 체력 전사 체력 힐러 체력
1000 900 900

전사가 몬스터를 한 번 공격하면 각 유닛의 남은 체력은 다음과 같습니다.

몬스터 체력 전사 체력 힐러 체력
910 900 900

힐러가 몬스터와 전사의 체력을 한 번씩 회복하면 각 유닛의 남은 체력은 다음과 같습니다.

몬스터 체력 전사 체력 힐러 체력
940 930 900

따라서 [940, 930, 900]을 return 하면 됩니다.

문제8

1 이상 9 이하 숫자가 적힌 카드를 이어 붙여 숫자를 만들었습니다. 이때, 숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 구하려 합니다.

예를 들어, 숫자 카드 1, 2, 1, 3로 만들 수 있는 수를 작은 순으로 나열하면 [1123, 1132, 1213, 1231, 1312, ... , 3121, 3211]입니다. n이 1312라면, 숫자 카드를 조합해 만든 수 중 n은 n은 5번째로 작은 수입니다.

숫자 카드를 담은 리스트 card, 수 n이 매개변수로 주어질 때 숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

카드에 적힌 숫자를 담은 리스트 card, 수 n이 solution 함수의 매개변수로 주어집니다.


return 값 설명

숫자 카드를 조합해 만든 수 중에서 n이 몇 번째로 작은 수인지 return 해주세요.


예시
card n return
[1, 2, 1, 3] 1312 5
[1, 1, 1, 2] 1122 -1
예시 설명

예시 #1 앞서 설명한 예와 같습니다.

예시 #2 숫자 카드를 조합하면 [1112, 1121, 1211, 2111]를 만들 수 있습니다. 따라서 1122는 만들 수 없습니다.

문제9

hour 시 minute 분에 아날로그 시계의 시침과 분침이 몇 도를 이루는지 계산하려 합니다. 예를 들어, 3시 00분에 시침과 분침은 90˚를 이룹니다.

어떤 시점의 시 hour, 분 minute이 매개변수로 주어질 때, hour 시 minute 분에 아날로그 시계의 시침과 분침이 이루는 각도를 소숫점 첫번째 자리까지 표현한 문자열을 return 하도록 solution 함수를 작성해주세요.


매개변수 설명

어떤 시점의 시 hour, 분 minute이 solution 함수의 매개변수로 주어집니다.


return 값 설명

hour 시 minute 분에 아날로그 시계의 시침과 분침이 이루는 각도를 소숫점 첫번째 자리까지 표현한 문자열을 return 하세요.


예시
hour minute return
3 0 "90.0"
예시 설명

앞서 설명한 예와 같습니다.

문제10

자연수를 제곱한 수는 제곱수, 세 제곱한 수는 세제곱 수라고 합니다. 예를 들어 2^2 = 4 는 제곱수, 3^3 = 27은 세제곱수 입니다.

두 자연수 a, b가 주어질 때 a 이상 b 이하인 자연수 중 _소수_의 제곱수와 세제곱수의 개수를 구하려 합니다. 예를 들어 a = 6, b = 30일 때 소수의 제곱수는 [9, 25]로 2개, 소수의 세제곱수는 [8, 27]로 2개로 총 4개입니다.

두 자연수 a, b가 매개변수로 주어질 때, a 이상 b 이하인 제곱수와 세제곱수의 개수의 합을 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

두 자연수 a, b가 solution 함수의 매개변수로 주어집니다.


return 값 설명

a 이상 b 이하인 제곱수와 세제곱수의 개수의 합을 return 해주세요.


예시
a b return
6 30 4
예시 설명

6 이상 30 이하인 수중 소수의 제곱수는 다음과 같습니다.

소수의 세제곱 수는 다음과 같습니다.

따라서 4를 return 하면 됩니다.

jcoding2601 commented 2 hours ago

4차 1급 1_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 2_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 3_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 4_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 5_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 6_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 7_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 8_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 9_initial_code.txt

jcoding2601 commented 2 hours ago

4차 1급 10_initial_code.txt