1979. 단어는 어디에 들어갈 수 있습니까?
test_case = int(input())
for test in range(test_case):
n, k = map(int, input().split())
puzzle = ((0) * (n+2)) + ((0) + list(map(int, input().split())) + (0) for _ in range(n)) + ((0) * (n+2))
hor_count_one = 0
ver_count_one = 0
res_count = 0
for i in range(n + 2):
for j in range(n + 2):
if puzzle(i)(j) == 1:
hor_count_one += 1
else:
if hor_count_one == k:
res_count += 1
hor_count_one = 0
else:
hor_count_one = 0
if puzzle(j)(i) == 1:
ver_count_one += 1
else:
if ver_count_one == k:
res_count += 1
ver_count_one = 0
else:
ver_count_one = 0
print(f"#{test + 1} {res_count}")
연속된 수를 세는 방법의 문제로 대체하여 해결책을 제시할 수 있습니다.
연속된 것의 수를 세는 것 hor_count_one
변수와 함께 ver_count_one
명명된 변수를 사용하여 각 변수에 연속된 수를 저장할 수 있습니다.
퍼즐 끝에 1이 있으면 예외가 발생하므로 이 문제의 해결책은 입력 퍼즐 외부에 0으로 둘러싸인 패딩을 만들어 이 예외를 해결하는 것입니다.
1983. 조교 등급
test_case = int(input())
for test in range(test_case):
n, k = map(int, input().split())
score = ()
alpt_score = ("A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0")
for i in range(n):
mid, fin, ass = map(int, input().split())
score.append(mid * 0.35 + fin * 0.45 + ass * 0.20)
k_score = score(k-1)
score.sort(reverse=True)
k_idx = score.index(k_score)
for idx, alpt in enumerate(alpt_score):
if k_idx < (idx+1) * n / 10:
print(f"#{test + 1} {alpt}")
break
입력된 각 점수를 주어진 점수 공식에 따라 계산하여 최종 점수를 산출합니다.
score
목록에 저장되도록 구성되어 있습니다.
k_score
결과를 원하는 순서대로 변수에 저장한 후, score
목록은 내림차순으로 정렬됩니다.
그리고 문제에 동등한 점수가 없다고 언급했으므로 그 점을 사용하십시오. k_idx
변수별로 정렬 score
목록에서 k_score
점수에 해당하는 순위가 저장되었습니다.
각 등급은 전체 인원의 10%만 받을 수 있기 때문에 이 부분은 for 문과 if 문을 활용하여 사용합니다.
k_idx
와 비교 후 메모를 발행하면 문제가 해결되었습니다.
1984. 중간 평균 찾기
test_case = int(input())
for test in range(test_case):
number = list(map(int, input().split()))
number.remove(max(number))
number.remove(min(number))
print(f"#{test+1} {int(round(sum(number) / len(number), 0))}")
이 문제는 목록에서 원하는 값을 제거하는 방법을 알고 있으면 쉽게 해결됩니다.
최대값과 최소값을 제거하는 방법에는 여러 가지가 있지만 remove( )
방법과 max( )
, min( )
함수를 함께 사용하여 목록에서 최대 값과 최소값을 제거하는 방법을 사용했습니다.