문제 6 |
타일을 'R', 'G', 'B' 색으로 칠하려 합니다. R 색으로는 3칸을 한 번에, G 색으로는 2칸을 한 번에 칠할 수 있으며, B 색으로는 1칸을 칠할 수 있습니다. 색은 R, G, B 순서로 한 번씩 번갈아 가면서 사용해야 하며, 타일의 길이를 넘겨서 칠할 수는 없습니다.
예를 들어, 타일 길이가 11이면 "RRRGGBRRRGG"의 색으로 칠할 수 있습니다.
타일 길이가 매개변수 tile_length로 주어질 때, 타일을 색칠한 순서를 문자열로 return하는 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
순서에 맞게 타일을 칠할 수 없다면 -1을 return 해주세요.
---
##### 매개변수 설명
타일 길이 tile_length가 solution 함수의 매개변수로 주어집니다.
* tile_length는 1,000 이하의 자연수입니다.
---
##### return 값 설명
타일을 색칠한 순서를 문자열로 return 해주세요.
* 순서에 맞게 타일을 칠할 수 없다면 -1을 return 해주세요.
---
##### 예시
tile_length | answer |
11 | "RRRGGBRRRGG"16 |
16 | "-1" |
##### 예시 설명
예시 #1
다음과 같은 순서로 타일을 칠하면 됩니다.
* 'R' - 3장
* 'G' - 2장
* 'B' - 1장
* 'R' - 3장
* 'G' - 2장
따라서 "RRRGGBRRRGG"를 return 하면 됩니다.
예시 #2
타일 길이는 16입니다.
'R', 'G', 'B' 순서대로 타일을 색칠하면 다음과 같습니다.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
R | R | R | G | G | B | R | R | R | G | G | B | R | R | R | - |
15번째 타일까지 칠하니 타일이 한 칸 남았습니다. G 색으로는 두 칸을 칠해야 하므로 타일을 더 칠할 수 없습니다. 따라서 "-1"을 return 합니다.
[ 소스 코드 ]
def solution(tile_length):
answer = ''
com = 'RRRGGB'
if tile_length%6 == 1 or tile_length%6 == 2 or @@@:
answer = '-1'
else:
for i in range(tile_length):
answer += com[i % 6]
return answer
#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
tile_length1 = 11
ret1 = solution(tile_length1)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret1, " 입니다.")
tile_length2 = 16
ret2 = solution(tile_length2)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret2, " 입니다.")
[ 정답 보기 ]
def solution(length):
answer = ''
com = 'RRRGGB'
if length%6 ==1 or length%6 ==2 or length%6 ==4:
answer = '-1'
else:
for i in range(length):
answer+=com[i % 6]
return answer
문제 7 |
주스 1잔을 만들려면 사과 3개와 당근 1개가 필요합니다. 그런데 키우는 토끼에게 먹이를 주기 위해 사과와 당근 종류에 상관없이 k개를 빼놓으려고 합니다. 주스는 최대한 많이 만들수록 좋습니다.
사과 개수 num_apple과 당근 개수 num_carrot, 토끼에게 줄 먹이 개수 k가 주어질 때 주스를 최대 몇 잔 만들 수 있는지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
---
#####매개변수 설명
사과 개수 num_apple과 당근 개수 num_carrot, 토끼에게 줄 먹이 개수 k가 solution 함수의 매개변수로 주어집니다.
* 사과 개수 num_apple과 당근 개수 num_carrot는 0 이상 200 이하인 정수입니다.
* 토끼에게 줄 먹이 개수 k는 0 이상 `num_apple+num_carrot` 이하인 정수입니다.
---
#####return 값 설명
주스를 최대 몇 잔 만들 수 있는지 return 해주세요.
---
#####예시
num_apple | num_carrot | k | return |
5 | 1 | 2 | 1 |
10 | 5 | 4 | 2 |
#####예시 설명
예시 #1
사과 2개를 먹이로 주면 사과 3개, 당근 1개가 남습니다. 남은 재료로 주스를 1잔 만들 수 있습니다.
예시 #2
사과 2개와 당근 2개를 먹이로 주면 사과 8개, 당근 3개가 남습니다. 남은 재료로 주스를 2잔 만들 수 있습니다.
[ 소스 코드 ]
def solution(num_apple, num_carrot, k):
answer = 0
if num_apple < num_carrot * 3:
answer = num_apple // 3
else:
answer = num_carrot
num_apple -= answer * 3
num_carrot -= answer
i = 0
while k - (num_apple + num_carrot + i) > 0:
if i % 4 == 0:
answer += 1
i = i + 1
return answer
# 아래는 테스트케이스 출력을 해보기 위한 코드입니다.
# 아래 코드는 잘못된 부분이 없으니, solution함수만 수정하세요.
num_apple1 = 5
num_carrot1 = 1
k1 = 2
ret1 = solution(num_apple1, num_carrot1, k1)
# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret1, "입니다.")
num_apple2 = 10
num_carrot2 = 5
k2 = 4
ret2 = solution(num_apple2, num_carrot2, k2)
# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret2, "입니다.")
[ 정답 보기 ]
def solution(a, b, k):
answer = 0
if a < (3 * b):
answer = a // 3
else:
answer = b
remain_a = a - 3 * answer
remain_b = b - answer
i = 0
k = k - (remain_a + remain_b)
while k > 0:
if i % 4 == 0:
answer = answer - 1
i = i + 1
k = k - 1
return answer
문제 8 |
A씨가 하루에 TV를 두 대 이상 트는 시간을 알아내려합니다. A씨는 매일 세 프로그램을 시청합니다. 프로그램 방송 시간이 겹칠 때는 TV를 여러 대 켜서 모든 프로그램을 봅니다.
예를 들어 두 프로그램 방송 시간대가 겹치면 TV를 두 대 켜고, 세 프로그램 방송 시간이 겹치면 TV를 세 대 켭니다.
세 프로그램 방영 시작 시각과 끝 시각이 담긴 2차원 배열 programs가 매개변수로 주어질 때, 하루에 TV를 2대 이상 트는 총 시간을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
---
#####매개변수 설명
3개의 프로그램이 시작되는 시각과 끝나는 시각이 담긴 2차원 배열 programs가 solution 함수의 매개변수로 주어집니다.
* programs의 행 길이는 항상 3입니다.
* programs 배열의 각 원소는 각 프로그램의 방송 시간이 [시작 시각, 끝 시각] 형태로 들어있습니다.
* 프로그램의 시작 시각과 끝 시각은 0 이상 24 이하의 정수입니다.
* 프로그램의 시작 시각은 끝 시각보다 항상 빠릅니다.
---
#####return 값 설명
A 씨가 TV를 2대 이상 트는 총 시간을 return 해주세요.
---
#####예시
programs | return |
[[1, 6], [3, 5], [2, 8]] | 4 |
#####예시 설명
2대의 TV를 트는 시간이 2시부터 3시까지, 5시부터 6시까지 총 2시간이고
3대의 TV를 트는 시간이 3시부터 5시까지 총 2시간입니다.
따라서 TV를 2대 이상 트는 시간은 총 4시간입니다.
[ 소스 코드 ]
def solution(programs):
answer = 0
used_tv = [0] * 25
for program in programs:
for i in range(program[0], program[1]):
used_tv[i] = used_tv[i] + 1
for i in used_tv:
if i >= 1:
answer = answer + 1
return answer
#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
#아래 코드는 잘못된 부분이 없으니, solution함수만 수정하세요.
programs = [[1, 6], [3, 5], [2, 8]]
ret = solution(programs)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
[ 정답 보기 ]
def solution(tv):
answer = 0
used_tv = [0] * 25;
for program in tv:
for i in range(program[0], program[1]):
used_tv[i] = used_tv[i] + 1
for i in used_tv:
if i >= 2:
answer = answer + 1
return answer
문제 9 |
관공서 주차장에서는 차량 2부제를 실시합니다. 차량 2부제는 차량 번호 끝자리가 홀수인 차량은 홀수 일에만, 짝수인 차량은 짝수 일에만 주차장에 들어올 수 있도록 하는 제도입니다.
며칠인지를 나타내는 day와 그날 주차장에 들어오려고 하는 차들의 번호를 담고 있는 배열 numbers가 매개변수로 주어질 때, 주차장에 들어올 수 있는 차량의 수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
단, 중복되는 번호판 번호는 주어지지 않습니다.
---
#####매개변수 설명
며칠인지를 나타내는 day와 그날 주차장에 들어오려고 하는 차들의 번호를 담고 있는 배열 numbers가 solution 함수의 매개변수로 주어집니다.
* day는 1 이상 31이하의 자연수입니다.
* numbers의 길이는 1 이상 9,000 이하입니다.
* numbers의 원소는 1,000 이상 9,999 이하의 자연수입니다.
* numbers에는 차량 번호가 중복되어 들어있지 않습니다.
---
#####return값 설명
주차장에 들어올 수 있는 차량의 수를 return 해주세요.
---
#####예시
day | numbers | return |
17 | [3285, 1724, 4438, 2988, 3131, 2998] | 2 |
#####예시 설명
17일은 홀수 일이므로 홀수 번호 차량인 1724, 3131 총 2대의 차량만 주차장에 들어올 수 있습니다.
[ 소스 코드 ]
def solution(day, numbers):
count = 0
for number in numbers:
if number%2 != day%2:
count += 1
return count
#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
#아래 코드는 잘못된 부분이 없으니, solution함수만 수정하세요.
day = 17
numbers = [3285, 1724, 4438, 2988, 3131, 2998]
ret = solution(day, numbers)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
[ 정답 보기 ]
def solution(day, numbers):
count = 0
for number in numbers:
if number%2 == day%2:
count += 1
return count
문제 10 |
배열 원소인 자신을 2로 나눈 값이 배열에 있는 수의 개수를 구하려고 합니다. 예를 들어, 배열이 [4, 8, 3, 6, 7]인 경우, 6/2 = 3, 8/2 =4이므로 자신을 2로 나눈 값이 배열에 들어있는 수의 개수는 총 2개입니다.
숫자가 담긴 배열 arr가 주어졌을 때, 자신을 2로 나눈 값이 배열에 들어있는 수가 몇 개인지 return 하는 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
---
##### 매개변수 설명
숫자가 담긴 배열 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 크기는 1 이상 1,000 이하입니다.
* arr의 원소는 1,000 이하의 자연수입니다.
---
##### return 값 설명
자신을 2로 나눈 값이 배열에 들어있는 수가 몇 개인지 return 해주세요.
##### 예시
arr | return |
[4, 8, 3, 6, 7] | 2 |
##### 예시 설명
4/2=2이고, 2는 배열에 없습니다.
8/2=4이고 4는 4 이고 4는 배열에 존재합니다.
3/2=1.5이고 1.5는 배열에 없습니다.
6/2=3이고 3은 배열에 존재합니다.
7/2=3.5이고 3.5는 배열에 없습니다.
따라서 자신을 2로 나눈 값이 배열에 들어있는 수가 총 2개이므로 2를 return 합니다.
[ 소스 코드 ]
def solution(arr):
answer = 0
for i in arr:
for i/2 in arr:
answer += 1
return answer
# 아래는 테스트케이스 출력을 해보기 위한 코드입니다.
# 아래 코드는 잘못된 부분이 없으니, solution함수만 수정하세요.
arr = [4, 8, 3, 6, 7]
ret = solution(arr)
#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret, "입니다.")
[ 정답 보기]
def solution(arr):
answer =0
for i in arr:
if i/2 in arr:
answer+=1;
return answer
[ 출처 ] www.ybmit.com cos pro 샘플문제
'COS Pro 파이썬 2급 모의고사' 카테고리의 다른 글
8. COS Pro 파이썬 2급 모의고사 4차(6-10번) (0) | 2024.03.02 |
---|---|
7. COS Pro 파이썬 2급 모의고사 4차(1-5번) (1) | 2024.03.02 |
5. COS Pro 파이썬 2급 모의고사 3차(1-5번) (1) | 2024.03.02 |
4. COS Pro 파이썬 2급 모의고사 2차(6-10번) (0) | 2024.03.02 |
3. COS Pro 파이썬 2급 모의고사 2차(1-5번) (0) | 2024.03.02 |