반응형

 

문제 1

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

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

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

---

#####매개변수 설명
선생님의 일정을 담은 배열 schedule이 solution 함수의 매개변수로 주어집니다.

* schedule의 원소는 "O" 또는 "X"입니다.
* schedule은 길이가 10인 배열입니다.

#####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, "입니다.")

 

[ 정답 보기 ]

더보기
def solution(schedule):
    answer = []
    for idx, i in enumerate(schedule):
        if i == "X":
            answer.append(idx+1)
    return answer

 

 

문제 2


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

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

* 통과한 종목이 하나 이하거나, 통과 점수의 반을 넘기지 못한 종목이 있다면 불합격입니다.
* 그 외에는 합격입니다.

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

```
1. 통과한 종목이 몇 개인지 셉니다.
2. 통과 점수의 반을 넘기지 못한 종목이 몇 개인지 셉니다.
3. 통과한 종목이 하나보다 많고 통과 점수의 반을 넘기지 못한 종목이 없으면 통과한 인원으로 셉니다.
```
각 종목 기록을 담고 있는 배열 scores가 매개변수로 주어질 때, 시험에 합격한 인원을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b func_c 함수와 매개변수를 알맞게 채워주세요.

---
#####매개변수 설명
각 종목 기록을 담고 있는 배열 scores가 solution 함수의 매개변수로 주어집니다.

* scores에는 윗몸일으키기, 팔굽혀펴기, 달리기 점수가 차례로 들어있습니다.
* scores의 원소는 0 이상 100 이하인 정수입니다.
* scores의 길이는 0 이상 10,000 이하인 정수입니다.

---
#####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 my_score in scores:
        passed = func_@@@(@@@)
        non_passed = 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, "입니다.")

 

[ 정답 보기 ]

더보기
def solution(scores):
	people_count = 0
	pass_score = [80, 88, 70]

	for score in scores:
		pass_count = 0
		for i in range(3):
			if score[i] < pass_score[i]/2:
				pass_count = 0
				break
			elif score[i] >= pass_score[i]:
				pass_count += 1
		if pass_count >1:
			people_count += 1
	return people_count

 

문제 3

A와 B가 카드 게임을 할 때, 누가 더 많은 점수를 획득했는지, 또 획득한 점수는 몇 점인지 알아보려고 합니다. 게임 규칙은 다음과 같습니다.
* 알파벳 a, b, c, d, e가 적힌 카드뭉치가 있습니다.
* A와 B가 서로 번갈아 가면서 n장씩 카드를 뽑습니다.
* 소유한 카드 점수를 합산합니다. 알파벳 카드 한 장당 a = 1점, b = 2점, c = 3점, d = 4점, e = 5점으로 점수를 계산합니다.
* 점수가 높은 사람이 승리합니다.

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

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

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

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

* n은 1 이상 25 이하인 자연수입니다.
* bundle은 모두 알파벳 소문자입니다.
* bundle의 길이는 2이상 2*n이하입니다.

---
#####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, "입니다.")

 

[ 정답 보기 ]

더보기
def func_a(cards, start):
    return cards[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(cards):
    answer = 0
    score_per_cards = {
        'a': 1,
        'b': 2,
        'c': 3,
        'd': 4,
        'e': 5
    }
    for card in cards:
        answer += score_per_cards[card]
    return answer
        
def solution(n, bundle):
    a_cards = func_a(bundle, 0)[:n]
    b_cards = func_a(bundle, 1)[:n]
    a_score = func_c(a_cards)
    b_score = func_c(b_cards)
    return func_b(a_score, b_score)

 

 

문제 4

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

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

* classes의 원소는 0이상 1,000이하인 정수입니다.
* classes의 길이는 1이상 1,000이하인 자연수입니다.
* m은 1이상 1,000이하인 자연수입니다.

---
#####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, "입니다.")

 

[ 정답 보기 ]

더보기
def solution(classes, m):
	count = 0
	for num in classes:
		while num > 0:
			num -= m
			count += 1
	return count

 

문제 5

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

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

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

---
#####매개변수 설명
식단의 열량을 담고 있는 배열 calorie가 solution 함수의 매개변수로 주어집니다.
* calorie의 각 원소는 0보다 크고 1,000보다 작거나 같은 자연수입니다.
* calorie의 길이는 0보다 크고 100보다 작거나 같은 자연수입니다.

---
#####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, "입니다.")

 

[ 정답 보기 ]

더보기
def solution(calorie):
    answer = 0
    min = 1000
    
    for x in calorie:
        if min < x:
            answer += (x - min)
        else:
            min = x

    return answer

 

 

[ 출처 ] http://www.ybmit.comcos pro 샘플문제

 

 

 

 

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