구름 알고리즘 위클리 [2주차 문제 1]
문제 정리
사용할 파라미터 :
l 과목별 학생수
s 구름이의 등수
n _a+ 성적 순 비율
k 과목의 수행평가 개수
m a+컷
V_i_=받은 수행평가 점수
조건:
1) 구름이의 백분율은 n%보다 좋아야한다.(백분율이 좋다==백분율이 낮다.)
2) V_i 점수들이 모두 m보다 높아야 한다.
코드
t=int(input())
inputs,l, s, n, k, m, V,v,grade=[], [], [], [], [], [],[],[],[]
for i in range(t):
inputs.append(input())
l.append(int(inputs[i].split(" ")[0]))
s.append(int(inputs[i].split(" ")[1]))
n.append(int(inputs[i].split(" ")[2]))
k.append(int(inputs[i].split(" ")[3]))
m.append(int(inputs[i].split(" ")[4]))
V.append(inputs[i].strip().split(" ")[5:])
if n[i]>=100-((l[i]-s[i])/l[i])*100:
for j in range(len(V[i])):
if m[i]<=int(V[i][j]):
grade.append(1)
else:
grade.append(0)
else:
grade.append(0)
if 0 in grade:
print(0)
else:
print(1)
코드 설명
t=int(input())
inputs,l, s, n, k, m, V,v,grade=[], [], [], [], [], [],[],[],[]
for i in range(t):
inputs.append(input())
l.append(int(inputs[i].split(" ")[0]))
s.append(int(inputs[i].split(" ")[1]))
n.append(int(inputs[i].split(" ")[2]))
k.append(int(inputs[i].split(" ")[3]))
m.append(int(inputs[i].split(" ")[4]))
V.append(inputs[i].strip().split(" ")[5:])
파라미터 입력을 받아온다. 이때, 입력끝에 공백이 들어가도 정상 출력할 수 있도록 strip()을 사용하여 양쪽 공백을 지운다.
if n[i]>=100-((l[i]-s[i])/l[i])*100:
for j in range(len(V[i])):
if m[i]<=int(V[i][j]):
grade.append(1)
else:
grade.append(0)
else:
grade.append(0)
조건1의 수식) n>=((l-s)/l)*100
∵ 구름이의 백분율은 n%보다 좋아야한다.(백분율이 좋다==백분율이 낮다.)
백분율 공식: (구름이보다 성적 낮은 학생들의 수 / 전체 학생수) *100
2) V_i 점수들이 모두 m보다 높아야 한다.
m<V_i
위 두 조건이 모두 만족하면 grade에 1을 넣는다.
if 0 in grade:
print(0)
else:
print(1)
grade에 0이 하나라도 있으면 0을 출력한다.
주의
리스트가 주가되어 실행되기 때문에 인덱싱이 중요함.
append와 '='를 이용하여 할당하는 방법이 다르다
=를 사용하는 것은 이미 행렬의 크기가 지정이 됐고 replace하는 개념.
append는 행렬의 크기가 지정이 되지 않아서 계속 뒤로 붙여넣을때 씀.
출력예시