Data Scientist 옌

매일 발전하는 IT문제해결사

Programing 프로그래밍/코딩테스트 문제풀이

[백준] 5단계: 1차원 배열

옌炎 2022. 2. 7. 19:08
728x90

매일 한 문제만 풀려는데 그마저 어렵네요. 늦더라도 하기~!

1. [10818] 최소, 최대

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

A = map(int, input())
B = list(map(int, input().split()))
print(min(B), max(B))

2. [2562] 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

num_list = list()
for i in range(9):
	num_list.append(int(input()))

print(max(num_list))
print(num_list.index(max(num_list))+1)

3. [2577] 숫자의 개수

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 0부터 9까지의 숫자 중 숫자가 쓰인 횟수를 한 줄에 하나씩 출력한다. 3 1 0 2 0 0 0 2 0 0

num = 1
for i in range(3):
	num *= int(input())

num_list = []
for i in str(num):
	num_list.append(int(i))

for j in range(10):
	print(num_list.count(j))

4. [3052] 나머지

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

num_list = list()
for i in range(10):
	num_list.append(int(input()) % 42)

print(len(set(num_list)))

5. [1546] 평균

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

A = int(input())
num_list = list(map(int, input().split()))

renewed = list()
for j in num_list:
	renewed.append(j/max(num_list)*100)

print(sum(renewed)/A)

6. [8958] OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

n = int(input())

for i in range(n):
    
    case = input()
    score = 0
    total_score = 0
    case_list = []
    
    for j in case:
        if j == "O":
            case_list.append(j)
            score = case_list.count("O")
        else:
            case_list = []
            score = 0
        total_score += score
    print(total_score)

7. [4344] 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

n = int(input())

for i in range(n):
	num_list = list(map(int, input().split()))
	screAver = sum(num_list[1:]) / num_list[0]
	over_average = 0
	for j in num_list[1:]:
		if j > screAver:
			over_average += 1
	print("{:.3f}%".format(round(over_average/num_list[0]*100), 3))

[23-06-22] 파이썬 반올림 정책에 의해 틀린 것을 발견하고 함수를 추가하여 수정하였음

n = int(input())

def roundCorrection(value, digit):
    return round(value+10**(-len(str(value))-1), digit)

for i in range(n):
	num_list = list(map(int, input().split()))
	screAver = sum(num_list[1:]) / num_list[0]
	over_average = 0
	for j in num_list[1:]:
		if j > screAver:
			over_average += 1
	print("{:.3f}%".format(roundCorrection(over_average/num_list[0]*100, 3)))
728x90

'Programing 프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글

[백준] 7단계: 문자열  (0) 2022.02.13
[백준] 6단계: 함수  (0) 2022.02.09
[백준] 4단계: while문  (0) 2022.01.21
[백준] 3단계: for문  (0) 2022.01.20
[백준] 2단계: if문  (0) 2022.01.19