연습문제:
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 해준다.
그러면 위와 같이 사전에 생성된 행렬 내부에 행렬형태로 값들이 입력된다.
이러한 이중 행령을 하나의 행렬로 만들어줄 필요가 있었고 itertools라는 라이브러리를 활용하여 해결해줬다.
이젠 해당 str 형태의 값들을 int 형태로 바꿔주면 된다
다음으론 평균을 구하는 건데, 사바사이겠지만 소프티어는 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 |