알고리즘

백준 - 1차원 배열

joy_lee 2021. 7. 26. 21:52

여러가지 값을 받아 1차원 배열을 만드는 방법

아래에서는 숫자를 입력받기 때문에 int를 사용했지만 문자를 입력받는다면 필요없다.

 

1. for을 이용해 하나씩 받아 배열에 추가하는 방법

1
2
3
data = []
for i in range(9):
    data.append(int(input()))
cs

9개의 수를 입력받아 data라는 list에 넣는다.

(줄바꿈으로 다른 수를 구분해서 입력하는 경우)

 

2. list에 map을 활용하는 방법

1
2
import sys
score = list(map(int, sys.stdin.readline().split()))
cs

입력받은 값들을 int형으로 바꾼 후 list에 저장한다

(공백으로 다른 수를 구분해서 넣는 경우)

 

 

백준 4344번 문제 - https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

입력받을 값들

1) 케이스의 개수

2) 학생수, 점수들(학생수만큼 입력된다)

 

내가 작성한 코드

1
2
3
4
5
6
import sys
= int(input())
case_input = []
for i in range(n):
    data = list(map(int, sys.stdin.readline().strip().split()))
    case_input.append(data)
cs

맨 처음 입력받은 케이스의 개수를 n으로 저장한 후,

학생수와 점수들을 한꺼번에 입력받아 data list에 저장한다.

그것을 case_input에 저장하는 것을 n번 반복한다.

문제의 예제처럼 입력하면 위와 같이 list가 저장된 list(case_input)가 만들어진다.

 

1
2
3
4
5
6
7
8
9
10
11
12
for case in case_input: #case 하나씩 계산
    num = case[0]
    score_input = case[1:]
    total = 0
    for score in score_input: #평균 구함
        total += score
    avg = total / num
    count = 0
    for score in score_input: #평균보다 큰 점수 
        if score > avg:
            count += 1
    print(f"{count/num*100:.3f}%")
cs

for문을 이용해 case 하나씩 계산한다

슬라이싱을 통해 맨 처음수인 학생수(num)와, 그 뒤의 수들인 점수들(score_input)로 분리해준다.

 

score_input의 숫자들을 하나씩 더해 총점을 구하고, 학생수로 나눠 평균을 구한다.

다시 score_input의 수들을 하나씩 평균과 비교해 평균과 큰 수가 있으면 count를 1씩 증가시킨다.

 

전체 학생수중에 평균을 넘는 사람수의 비율을 계산헤 출력한다.

소수점 셋째자리까지 출력하기 위해 string-formatting을 사용한다.

 

내가 사용한 방법은 f-string 이다.

f"출력하기 원하는 {내용}" 형식으로 앞에 f를 붙여줘야 한다.

변수의 이름을 {}으로 감싸서 안에 넣으면 변수를 바로 출력할 수 있다.

 

문자열 자르기

f"{number:.3f}"

숫자 뒤에 :.3f를 붙여주면 소수점 세번째 자리까지 출력할 수 있다.

참고한 페이지

https://codechacha.com/ko/python-string-formatting/

 

Python - String Formatting의 다양한 방법 정리(%, Str formatting, f-stirng)

Python의 String formatting에 대해서 정리하였습니다. % formatting, string formatting, f-string 으로 문자열을 formatting할 수 있습니다. padding, align, datetime, Named placeholders, Parameterized format 등을 적용하는 예제를

codechacha.com

 

'알고리즘' 카테고리의 다른 글

백준 - 10809번 / 아스키코드, enumerate()  (0) 2021.07.28
백준 - 함수  (0) 2021.07.27
백준 - while문  (0) 2021.07.20
백준 - for문  (0) 2021.07.20
백준 - if문  (0) 2021.07.16