반응형
문제 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 샘플문제

 

 

반응형
Posted by 명문코딩컴퓨터
,