[BaekJoon/Python] 1차원 배열 : 10818, 2562, 2577, 3052, 1546, 8958, 4344

GURI·2022년 1월 22일
0

BaekJoon/Python

목록 보기
5/7
post-thumbnail

백준 단계 5, 1차원 배열

#10818 최소, 최대

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

👩🏻‍💻 My Code :

# 1. min, max 내장함수 사용
n = int(input())
mylist = list(map(int, input().split()))
print(min(mylist), max(mylist))
#2. min, max 안 쓴 버전
n = int(input())
mylist = list(map(int, input().split()))
minnum = mylist[0]
maxnum = mylist[0]

for i in range(len(mylist)):
    if mylist[i] < minnum:
        minnum = mylist[i]
    if mylist[i] > maxnum:
        maxnum = mylist[i]
print(minnum, maxnum)

#2562 최대값

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

👩🏻‍💻 My Code :

# 1. 처음 생각한 코드
mylist = [int(input()) for i in range(9)]
maxnum = max(mylist)
idx = 1
for i in mylist:
    if i == maxnum:
        print(maxnum)
        print(idx)
    idx += 1
# 2. index 써서 더 간단히 !
mylist = [int(input()) for i in range(9)]
maxnum = max(mylist)
print(maxnum)
print(mylist.index(maxnum) + 1)

#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번 쓰였다.

👩🏻‍💻 My Code :

a = int(input())
b = int(input())
c = int(input())
x = list(str(a*b*c))

for i in range(10):
    print(x.count(str(i)))

#3052 나머지

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

👩🏻‍💻 My Code :

mylist = [int(input()) for _ in range(10)]
value = [i%42 for i in mylist]
print(len(set(value)))

=> 리스트를 집합(set)으로 바꿔주면 중복이 제거되고 unique한 값만 남는다 !

#1546 평균

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

👩🏻‍💻 My Code :

n = int(input())
score = list(map(int, input().split()))
maxscore = max(score)
newscore = [i / maxscore*100 for i in score]
newmean = sum(newscore) / n
print(newmean)

#8958 OX퀴즈

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

👩🏻‍💻 My Code :

#8958
n = int(input())

for _ in range(n):
    li = list(input())
    score, final_score = 0, 0
    for i in li:
        if i == 'O':
            score += 1
            final_score += score
        elif i == 'X':
            score = 0
    print(final_score)

#4344 평균은 넘겠지

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

👩🏻‍💻 My Code :

n = int(input())
for i in range(n):
    li = list(map(int, input().split()))
    avg = sum(li[1:]) / li[0]
    count = 0
    for score in li[1:]:
        if score > avg:
            count += 1
    print("{:.3f}%".format(count / li[0] * 100))
profile
Done is better than Perfect.

0개의 댓글