jcoding2601 / jcoding

0 stars 0 forks source link

COS Pro Python2급 4차 #4

Open jcoding2601 opened 1 month ago

jcoding2601 commented 1 month ago

#문제1 학생 10명이 상담을 받기 위해 매일 한 명씩, 순서대로 상담실을 찾아갑니다. 상담은 상담 선생님이 계실 때에만 상담을 받을 수 있습니다. 또한 한번 상담실을 방문한 학생은 다시 상담실에 찾아가지 않습니다. 선생님의 일정표가 주어질 때, 누가 상담을 받지 못했는지 알고 싶습니다. 일정표에는 선생님이 있는 날엔 "O"가, 없는 날엔 "X"가 표시됩니다.

예를 들어, 선생님의 일정이 ["O", "X", "X", "O", "O", "O", "X", "O", "X", "X"]라면 2번, 3번, 7번, 9번, 10번의 학생은 상담을 받지 못합니다.

선생님의 일정을 담은 리스트 schedule이 매개변수로 주어질 때, 상담을 받지 못한 학생의 번호를 오름차순으로 정렬하여 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

선생님의 일정을 담은 리스트 schedule이 solution 함수의 매개변수로 주어집니다.

return값 설명

상담을 받지 못한 학생들의 번호를 오름차순으로 정렬하여 return합니다.


예시
schedule return
["O", "X", "X", "O", "O", "O", "X", "O", "X", "X"] [2, 3, 7, 9, 10]

예시 설명

1일, 4일, 5일, 6일, 8일에만 선생님이 상담실에 있으므로 2번, 3번, 7번, 9번, 10번 학생은 상담을 받지 못합니다.

def solution(schedule): answer = [] for idx, i in enumerate(schedule): if i == @@@: answer.append(@@@) return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

schedule = ["O", "X", "X", "O", "O", "O", "X", "O", "X", "X"] ret = solution(schedule)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제2 체력시험 합격 인원을 알아보려고 합니다. 체력시험 종목으로는 윗몸일으키기, 팔굽혀펴기, 달리기가 있습니다. 종목별 합격기준은 다음과 같습니다.

윗몸일으키기 팔굽혀펴기 달리기
80점 이상 88점 이상 70점 이상

시험에 합격한 인원을 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. 통과한 종목이 몇 개인지 셉니다.
2. 통과 점수의 반을 넘기지 못한 종목이 몇 개인지 셉니다.
3. 통과한 종목이 하나보다 많고 통과 점수의 반을 넘기지 못한 종목이 없으면 통과한 인원으로 셉니다.

각 종목 기록을 담고 있는 리스트 scores가 매개변수로 주어질 때, 시험에 합격한 인원을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b func_c 함수와 매개변수를 알맞게 채워주세요.


매개변수 설명

각 종목 기록을 담고 있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.


return값 설명

시험에 합격한 인원을 return합니다.


예시
score return
[[30, 40, 100], [97, 88, 95]] 1
[[90, 88, 70], [85, 90, 90], [100, 100, 70], [30, 90, 80], [40, 10, 20], [83, 88, 80]] 4

예시 설명

예시 #1 1번째 사람은 윗몸일으키기 30점, 팔굽혀펴기 40점으로 합격 점수의 반을 통과하지 못해 불합격입니다. 2번째 사람은 윗몸일으키기 97점, 팔굽혀펴기 88점, 달리기 95점으로 모두 통과하여 합격입니다. 따라서 총 1명이 합격하였습니다.

예시 #2 1번째, 2번째, 3번째, 6번째 사람이 합격 기준을 만족하여 총 4명이 합격하였습니다.

def func_a(passed, non_passed): return ( passed > 1 and non_passed ==0 )

def func_b(scores): answer = 0 if scores[0] < 40: answer += 1 if scores[1] < 44: answer += 1 if scores[2] < 35: answer += 1 return answer

def func_c(scores): answer = 0 if scores[0] >= 80: answer += 1 if scores[1] >= 88: answer += 1 if scores[2] >= 70: answer += 1 return answer

def solution(scores): answer = 0 for myscore in scores: passed = func@@@(@@@) nonpassed = func@@@(@@@) answer += func_@@@(@@@, @@@) return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

scores1 = [[30, 40, 100], [97, 88, 95]] ret1 = solution(scores1)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret1, "입니다.")

scores2 = [[90, 88, 70], [85, 90, 90], [100, 100, 70], [30, 90, 80], [40, 10, 20], [83, 88, 80]] ret2 = solution(scores2)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret2, "입니다.")

#문제3 A와 B가 카드 게임을 할 때, 누가 더 많은 점수를 획득했는지, 또 획득한 점수는 몇 점인지 알아보려고 합니다. 게임 규칙은 다음과 같습니다.

게임에서 이긴 사람과 획득 점수를 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. A와 B가 번갈아가며 가져간 카드를 각각 리스트에 넣습니다.
2. A와 B가 각각 획득한 점수를 구합니다.
3. 획득한 점수가 큰 사람과 획득한 점수를 순서대로 리스트에 담아 return 합니다.

뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 매개변수로 주어질 때, 이긴 사람과 점수를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.


매개변수 설명

뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 solution함수의 매개변수로 주어집니다.


return값 설명

이긴 사람과 획득한 점수를 return합니다. A가 이겼을 경우에는 1, B가 이겼을 경우에는 2, 무승부일 경우에는 0을 return 해주세요.


예시
n bundle return
4 "cacdbdedccbb" [0, 13]

예시 설명

A는 c, c, b, e 카드를 뽑았고 B는 a, d, d, d 카드를 뽑았습니다. A가 획득한 점수는 13점이고 B가 획득한 점수는 13점입니다. 둘다 13점을 획득하여 게임은 무승부로 끝납니다.

def func_a(bundle, start): return bundle[start::2]

def func_b(score1, score2): if score1 > score2: return [1, score1] elif score2 > score1: return [2, score2] else: return [0, score1]

def func_c(bundle): answer = 0 score_per_cards = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 } for card in bundle: answer += score_per_cards[card] return answer

def solution(n, bundle): a_cards = func_a(@@@, @@@)[:n] b_cards = func_a(@@@, @@@)[:n] a_score = func_c(@@@) b_score = func_c(@@@) return func_b(@@@, @@@)

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

n = 4 bundle = "cacdbdedccbb" ret = solution(n, bundle)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제4 프로그래밍 수업 n개를 동시에 진행할 때, 필요한 조교 수를 알아보려고 합니다. 조교 1명이 m명의 학생을 담당합니다. 교실별 학생 수 classes, 조교 1명이 담당하는 학생 수 m이 매개변수로 주어질 때, 수업을 진행하기 위한 조교 수를 return 하는 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

교실별 학생 수 classes, 조교 1명이 담당하는 학생 수 m이 solution 함수의 매개변수로 주어집니다.


return값 설명

수업을 진행하기 위한 조교 수를 return합니다.


예시
classes m return
[80, 45, 33, 20] 30 8

예시 설명

예시 #1 반마다 학생 수가 80명, 45명, 33명, 20명이고 조교 1명이 학생 30명을 담당합니다. 반마다 필요한 조교 수는 3명, 2명, 2명, 1명으로 총 8명의 조교가 필요합니다.

def solution(classes, m): answer = 0 for students in classes: answer += students @@@ m if students @@@ m != 0: answer += 1 return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

classes = [80, 45, 33, 20] m = 30 ret = solution(classes, m)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제5 열량이 적힌 식단표가 있습니다. 다이어트를 하는 A 씨는 오늘 먹는 열량이 그동안 먹은 식단의 열량 중 최솟값보다 큰 경우 운동을 하여 그 차이만큼을 소모합니다.

예를 들어, 식단의 열량이 [713, 665, 873, 500, 751]이라면 둘째 날까지는 운동을 하지 않습니다. 셋째 날 식단의 열량이 873이고 그 전의 먹은 열량의 최솟값이 665이므로 208 열량을 소모하기 위한 운동을 합니다. 넷째 날은 운동을 하지 않고 다섯째 날 식단의 열량이 751이고 그 전의 먹은 열량의 최솟값이 500이므로 251 열량을 소모하기 위한 운동을 합니다. 따라서 운동으로 소모하는 총열량은 459입니다.

식단의 열량을 담고 있는 리스트 calorie가 매개변수로 주어질 때, 운동으로 소모하는 총열량을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


매개변수 설명

식단의 열량을 담고 있는 리스트 calorie가 solution 함수의 매개변수로 주어집니다.


return 값 설명

운동으로 소모하는 총열량을 return 해주세요.


예시
calorie return
[713, 665, 873, 500, 751] 459
예시 설명

문제의 예와 같습니다.

def solution(calorie): min_cal = 0 answer = 0 for cal in calorie: if cal > min_cal: answer += cal - min_cal min_cal = min(min_cal, cal) return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.

calorie = [713, 665, 873, 500, 751] ret = solution(calorie)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제6 적립된 포인트를 최대한으로 사용하려고 합니다. 포인트를 사용하는 규칙은 다음과 같습니다.

적립된 포인트 point가 매개변수로 주어질 때, 최대 몇 포인트를 쓸 수 있는지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


매개변수 설명

적립된 포인트 point가 solution함수의 매개변수로 주어집니다.


return 값 설명

최대 몇 포인트를 쓸 수 있는지 return합니다


예시
point return
2323 2300
예시 설명

적립된 포인트가 2323포인트라면 최대로 사용 가능한 포인트는 2300포인트입니다.

def solution(point): if point < 1000: return 0 return point * 100 // 100

아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.

point = 2323 ret = solution(point)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제7 중간시험 점수와 기말시험 점수가 있습니다. 이를 바탕으로 점수가 가장 많이 오른 학생의 점수 차이와 가장 많이 떨어진 학생의 점수 차이를 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최댓값을 구합니다.
2. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최솟값을 구합니다.
3. 1번과 2번 과정에서 구한 점수를 리스트에 담아 return 합니다.

예를 들어 중간시험 점수가 [20, 50, 40]이고, 기말시험 점수가 [10, 50, 70]이면, 학생의 시험 점수 차이는 [-10, 0, 30]입니다. 따라서 성적이 가장 많이 오른 학생은 30점이 올랐습니다. 그리고 성적이 가장 많이 떨어진 학생은 10점이 떨어졌습니다.

학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다. 이 때 성적이 가장 많이 오른 학생의 점수 차이를 리스트 첫 번째 원소 로, 성적이 가장 많이 떨어진 학생의 점수 차이를 두 번째 원소 로 담은 리스트를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


매개변수 설명

학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다.


return 값 설명

성적이 가장 많이 오른 학생의 점수 차이를 리스트 첫 번째 원소 로 하고, 성적이 가장 많이 떨어진 학생의 점수 차이를 두 번째 원소 로 담은 리스트를 return 해주세요.

예시
mid_scores final_scores return
[20, 50, 40] [10, 50, 70] [30, -10]

def func_a(scores1, scores2): answer = 0 for score1, score2 in zip(scores1, scores2): answer = max(answer, score2 - score1) return answer

def func_b(scores1, scores2): answer = 0 for score1, score2 in zip(scores1, scores2): answer = min(answer, score1 - score2) return answer

def solution(mid_scores, final_scores): up = func_a(mid_scores, final_scores) down = func_b(mid_scores, final_scores) answer = [up, down] return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.

mid_scores = [20, 50, 40] final_scores = [10, 50, 70] ret = solution(mid_scores, final_scores)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제8 1번부터 n번까지의 후보에 대한 투표 결과가 주어질 때, 과반수를 득표한 후보자의 번호를 구하려고 합니다. 여기서 과반수란 절반이 넘는 수를 의미합니다.

예를 들어, 1번부터 3번까지의 후보에 대한 투표 결과가 [1, 2, 1, 3, 1, 2, 1]이라면 순서대로 [1번, 2번, 1번, 3번, 1번, 2번, 1번] 후보에 투표했음을 나타내고, 이 경우 당선된 후보자의 번호는 1번입니다.

후보의 수 n, 투표 결과가 담긴 리스트 votes가 매개변수로 주어질 때, 과반수를 득표한 후보자의 번호를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 작동하지 않습니다. 주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


매개변수 설명

후보의 수 n, 투표 결과가 담긴 리스트 votes가 solution 함수의 매개변수로 주어집니다.


return 값 설명

과반수를 득표한 후보자의 번호를 return 해주세요.


예시
n votes return
3 [1,2,1,3,1,2,1] 1
2 [2,1,2,1,2,2,1] 2
예시 설명

예시 #1 1번부터 3번까지의 후보 3명이 있으며, 투표 결과는 [1, 2, 1, 3, 1, 2, 1]입니다. 총 투표 수는 7표이며, 1번 후보가 4표, 2번 후보가 2표, 3번 후보가 1표씩 받았습니다. 이 경우, 1번 후보가 과반수를 득표하였으므로 1을 return 합니다.

예시 #2 1번부터 2번까지의 후보 2명이 있으며, 투표 결과는 [2, 1, 2, 1, 2, 2, 1]입니다. 총 투표 수는 7표이며, 1번 후보는 3표, 2번 후보는 4표를 받았습니다. 이 경우, 2번 후보가 과반수를 득표하였으므로 2를 return 합니다.

def solution(n, votes): arr = [0] * (n + 1) for vote in votes: arr[vote] += 1

for i in range(1, n+1):
    if arr[i] > n/2:
        return i
return -1

아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.

n1 = 3 votes1 = [1, 2, 1, 3, 1, 2, 1] ret1 = solution(n1, votes1)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은 ", ret1, " 입니다.")

n2 = 2 votes2 = [2, 1, 2, 1, 2, 2, 1] ret2 = solution(n2, votes2)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은 ", ret2, " 입니다.")

#문제9 4 x 4 크기 격자 모양 지형에 위험 지역이 몇 개인지 알고 싶습니다. 위험지역이란 동, 서, 남, 북 인접한 지역이 모두 해당 지역보다 높은 지역입니다. 예를 들어 지역 높이가 아래와 같다면

ㅅㅡㅋㅡㄹㅣㄴㅅㅑㅅ 2018-07-25 ㅇㅗㅎㅜ 3.05.26.png

빨간 영역은 인접한 지역이 모두 해당 지역보다 높은 위험지역입니다.

지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어질 때, 위험 지역이 몇 개인지 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어집니다.


return 값 설명

위험지역이 몇 개인지 return 해주세요.


예시
height return
[[3, 6, 2, 8], [7, 3, 4, 2], [8, 6, 7, 3], [5, 3, 2, 9]] 5
예시 설명

문제에 나온 예와 같습니다.

다음과 같이 import를 사용할 수 있습니다.

import math

def solution(height):

여기에 코드를 작성해주세요.

count = 0
return count

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

height = [[3, 6, 2, 8], [7, 3, 4, 2], [8, 6, 7, 3], [5, 3, 2, 9]] ret = solution(height)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")

#문제10 XX 시험을 친 수험생들의 점수가 주어질 때, 합격자 수를 구하려 합니다. 시험에 합격하기 위해서는 커트라인 이상의 점수를 받아야 합니다.

예를 들어 수험생들의 점수가 [80점, 90점, 55점, 60점, 59점]이고, 커트라인이 60점이라면 3명이 합격했습니다.

수험생들의 시험 점수가 들어있는 리스트 scores, 커트라인 점수 cutline이 매개변수로 주어질 때, 합격자 수를 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

수험생들의 시험 점수가 들어있는 리스트 scores, 커트라인 점수 cutline이 solution 함수의 매개변수로 주어집니다.


return 값 설명

합격자의 수를 return 합니다.


예시
scores cutline result
[80, 90, 55, 60, 59] 60 3
예시 설명

예시 #1

따라서 3명이 합격했습니다.

다음과 같이 import를 사용할 수 있습니다.

import math

def solution(scores, cutline):

여기에 코드를 작성해주세요.

answer = 0
return answer

아래는 테스트케이스 출력을 해보기 위한 코드입니다.

scores = [80, 90, 55, 60, 59] cutline = 60 ret = solution(scores, cutline)

[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.

print("solution 함수의 반환 값은", ret, "입니다.")