룰루랄라_코테

Softeer: 성적 평균

우기빌리 2023. 11. 3. 14:25

연습문제:

https://softeer.ai/practice/6294/history?questionType=ALGORITHM

 

상당히 까다로웠지만, 풀 수 있다는게 어디야

지난 번에 두 변수에 스페이스바로 구분해서 입력한 값을 저장하는 방법을 배웠었다.

N, K = map(int,input().split())

 

하지만 하나의 변수에 여러 개의 값을 입력하려고 하니 같은 방법은 안되더라

그래서 해결한 방법은 아래와 같다:

S.append(input().split())
S = list(itertools.chain(*S))
S = list(map(int, S))

 

먼저 S라는 배열을 선언한 뒤

스페이스바로 구분된 입력값을 차례대로 append 해준다.

print(S.append(intput().split())

그러면 위와 같이 사전에 생성된 행렬 내부에 행렬형태로 값들이 입력된다.

 

이러한 이중 행령을 하나의 행렬로 만들어줄 필요가 있었고 itertools라는 라이브러리를 활용하여 해결해줬다.

print(list(itertools.chain(*S)))

이젠 해당 str 형태의 값들을 int 형태로 바꿔주면 된다

print(list(map(int, S)))

 

다음으론 평균을 구하는 건데, 사바사이겠지만 소프티어는 numpy와 같은 외부 라이브러리를 사용하지 못하게 한다...

그래서 꾸역꾸역 더한 값들을 더한 값의 개수만큼 나눠줬다.

 

또 하나 풀었다.

 

전체 코드:

import sys, itertools
# 외부 라이브러리(numpy 사용불가)

# 3.5h

N, K = map(int,input().split())

S = []
F = []
f = 0
A = []
B = []
j = 0

S.append(input().split())
print(S)
S = list(itertools.chain(*S))
print(S)
S = list(map(int, S))
print(S)

if len(S) == N:
    for i in range(K):
        a, b = map(int, input().split())
        A.append(a), B.append(b)
        if A[i] > N or A[i] < 1 or B[i] > N or B[i] < 1:
            ValueError
        else:
            for j in range(B[i] - A[i] + 1):
                T = S[A[i]-1+j]
                f += T
            PG = f / (B[i] - A[i] + 1)
            F.append(PG)
            f = 0

else:
    print("잘못된 개수를 입력했습니다.")
    ValueError

for k in range(K):
    print('{:.2f}'.format(F[k]))

 

소요시간: 3시간 25분

난이도: ☆☆

'룰루랄라_코테' 카테고리의 다른 글

Softeer: 근무 시간  (0) 2023.11.03
Softeer: 바이러스  (0) 2023.10.24
Softeer: A+B  (1) 2023.10.23