반응형

 

문제 6

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

* 포인트는 100포인트 단위로 사용합니다.
* 1000포인트 이상 있을 때만 포인트를 사용할 수 있습니다.

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

---
##### 매개변수 설명
적립된 포인트 point가 solution함수의 매개변수로 주어집니다.
* point는 0 이상 1,000,000 이하인 정수입니다.

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

 

[ 정답 보기 ]

더보기
def solution(point):
	answer = 0
	if point >= 1000:
		answer = point - point%100
	return answer

 

 

문제 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 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 <U>**한 줄**</U>만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---
##### 매개변수 설명
학번순으로 중간시험 점수를 담은 배열 mid_scores와 학번순으로 기말시험 점수를 담은 배열 final_scores가 solution 함수의 매개변수로 주어집니다. 

* 시험 점수는 100 이하인 자연수입니다.
* mid_scores의 길이는 5 이상 50 이하입니다.
* 배열 mid_scores의 길이와 배열 final_scores의 길이는 같습니다.

---
##### return 값 설명
성적이 가장 많이 오른 학생의 점수 차이를 **배열 첫 번째 원소** 로 하고,  성적이 가장 많이 떨어진 학생의 점수 차이를 **두 번째 원소** 로 담은 배열을 return 해주세요.
* 점수가 오른 학생이 없으면 첫 번째 원소에 0을 넣고, 점수가 떨어진 학생이 없으면 두 번째 원소에 0을 넣도록 합니다.


##### 예시

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

 

[ 정답 보기 ]

더보기
def solution(mid_scores, final_scores):
    answer = []
    answer.append(max(final-mid for mid,final in list(zip(mid_scores,final_scores))))
    
    answer.append(min(final-mid for mid,final in list(zip(mid_scores,final_scores))))    
    return answer

 

 

 

문제 8

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

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

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

---
#####매개변수 설명

후보의 수 n, 투표 결과가 담긴 배열 votes가 solution 함수의 매개변수로 주어집니다.
* n은 1 이상 100 이하의 자연수입니다.
* votes의 길이는 1 이상 1,000 이하의 자연수입니다.
* votes의 각 원소는 1 이상 n 이하의 자연수입니다.

---
#####return 값 설명

과반수를 득표한 후보자의 번호를 return 해주세요.
* 만약, 과반수를 득표한 후보자가 없다면 -1을 return 해주세요.

---
#####예

n votes return
3  [1,2,1,3,1,2,1]  1 
[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, " 입니다.")

 

[ 정답 보기 ]

더보기
def solution(n, votes):
    answer = 0
    votes_len = len(votes)
    candidate = votes[0]
    count = 1
    for i in range (1, votes_len) :
        if candidate == votes[i] :
            count += 1
        else :
            count -= 1
        if count == 0 :
            candidate = votes[i]
            count = 1

    test_count = 0
    for i in range(0, votes_len) :
        if votes[i] == candidate :
            test_count += 1

    if test_count > votes_len // 2 :
        answer = candidate
    else :
        answer = -1
        
    return answer

 

 

 

문제 9

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


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

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

---
#####매개변수 설명
지역별 높이가 담긴 2차원 배열 height가 solution 함수의 매개변수로 주어집니다.
* 각 지역의 높이는 1 이상 50 이하인 자연수입니다.

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

 

[ 정답 보기 ]

더보기
def solution(height):
    count = 0
    dx = [ -1, 1, 0, 0 ]
    dy = [ 0, 0, -1, 1 ]
    for i in range(4):
        for j in range(4):
            is_danger = True
            for k in range(4):
                if 0 <= i+dx[k] and i+dx[k] < 4 and 0 <= j+dy[k] and j+dy[k] < 4:
                    if height[i+dx[k]][j+dy[k]] <= height[i][j]:
                        is_danger = False
            if is_danger:
                count += 1
    return count

 

 

 

문제 10

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

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

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

---
##### 매개변수 설명
수험생들의 시험 점수가 들어있는 배열 scores, 커트라인 점수 cutline이 solution 함수의 매개변수로 주어집니다.
* scores의 원소는 각 학생의 시험 점수를 나타내며 0 이상 100 이하의 정수입니다.
* scores의 길이는 1 이상 100 이하입니다.
* cutline은 0 이상 100 이하의 정수입니다.

---
##### return 값 설명
합격자의 수를 return 합니다.

---
##### 예시

scores cutline result
 [80, 90, 55, 60, 59]  60  3   

##### 예시 설명
예시 #1
* 80점, 90점, 60점은 합격입니다.
* 55점, 59점은 불합격입니다.

따라서 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, "입니다.")

 

[ 정답 보기 ]

더보기
def solution(scores, cutline):
    answer = 0
    for s in scores:
        if s >= cutline:
            answer += 1
    return answer

 

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

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