🔗 문제 링크
for _ in range(1, 11):
test_case = int(input())
array = [list(map(int, input().split())) for _ in range(100)]
answer = 0
for i in range(100):
temp = 0
for j in range(100):
temp += array[i][j]
answer = max(answer, temp)
for i in range(100):
temp = 0
for j in range(100):
temp += array[j][i]
answer = max(answer, temp)
temp = 0
for i in range(100):
temp += array[i][i]
answer = max(answer, temp)
print(f"#{test_case} {answer}")
answer
를 업데이트해준다.🔗 문제 링크
for _ in range(1, 11):
test_case = int(input())
target = input()
sentence = input()
print(f"#{test_case} {sentence.count(target)}")
count()
를 이용하여 단어의 개수를 구한다.🔗 문제 링크
def find_palindrome(array):
result = 0
for line in array:
for i in range(8 - n + 1):
target = line[i:i+n]
if target == target[::-1]:
result += 1
return result
for test_case in range(1, 11):
n = int(input())
board = [list(input().strip()) for _ in range(8)]
answer = find_palindrome(board)
board = list(zip(*board[::-1]))
answer += find_palindrome(board)
print(f"#{test_case} {answer}")
find_palindrome
를 만들어서 열을 기준으로 탐색하여 찾은 회문 수를 answer
에 저장한다.board
를 인자로 다시 find_palindrome
을 호출해서 찾은 회문 수를 answer
에 더한다.🔗 문제 링크
for test_case in range(1, 11):
n, s = input().split()
stack = [s[0]]
for i in range(1, int(n)):
if len(stack) != 0 and stack[-1] == s[i]:
stack.pop()
else:
stack.append(s[i])
print(f"#{test_case} {''.join(map(str, stack))}")
stack
에 넣은 뒤, 스택이 비어있지 않고 제일 위에 있는 원소가 현재 원소와 동일하다면 pop()
을, 앞의 경우가 아니라면 append()
를 이용하여 현재 원소를 stack
에 넣어준다. 🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
n, m, k = map(int, input().split())
times = sorted(list(map(int, input().split())))
bread = 0
flag = True
idx = 0
for i in range(0, times[-1] + 1):
if i > 0 and i % m == 0:
bread += k
if times[idx] <= i: # 손님 도착 시간이 되면
if bread > 0:
bread -= 1
idx += 1
else:
flag = False
break
if flag:
print(f"#{test_case} Possible")
else:
print(f"#{test_case} Impossible")
bread
의 값을 검사하여 제공 가능 여부를 판단한다.🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
n = int(input())
board = [list(map(int, input().strip())) for _ in range(n)]
answer = 0
count = 0
for i in range(n):
gap = abs(n // 2 - i)
answer += sum(board[i][gap:n - gap])
print(f"#{test_case} {answer}")
answer
에 농작물의 가치를 더해주면 된다.🔗 문제 링크
from itertools import combinations
T = int(input())
for test_case in range(1, T + 1):
n, k = map(int, input().split())
numbers = list(map(int, input().split()))
answer = 0
for i in range(1, n + 1):
for combi in combinations(numbers, i):
if sum(combi) == k:
answer += 1
print(f"#{test_case} {answer}")
combinations
를 이용하여 모든 조합을 구한 뒤, 이 부분 수열의 합이 K
가 될때마다 answer
를 1씩 증가시킨다.🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
n, m = map(int, input().split())
animal = [0, 0] # 유니콘, 트윈혼
animal[1] = n // 2
animal[0] = n - (2 * animal[1])
while sum(animal) != m:
if sum(animal) > m:
animal[0] -= 2
animal[1] += 1
else:
animal[0] += 2
animal[1] -= 1
print(f"#{test_case}", *animal)
animal
값을 만든 다음, animal
의 합이 m
이 같아질 때까지 트윈혼과 유니콘의 개수를 조정해준다.🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
a, b = map(int, input().split())
print(f"#{test_case} {a + b}")
🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
scores = list(map(int, input().split()))
total = 0
for score in scores:
total += max(40, score)
print(f"#{test_case} {total // 5}")
🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
l, u, x = map(int, input().split())
answer = 0
if x < l:
answer = l - x
elif x > u:
answer = -1
print(f"#{test_case} {answer}")
🔗 문제 링크
from collections import Counter
T = int(input())
for test_case in range(1, T + 1):
a, b, c = map(int, input().split())
counter = Counter((a, b, c)).most_common(2)
most = sorted(counter, key=lambda x: x[1])
print(f"#{test_case} {most[0][0]}")
(a, b, c)
를 등장 횟수를 기준으로, 오름차순으로 정렬한다.🔗 문제 링크
T = int(input())
for test_case in range(1, T + 1):
n = int(input())
cards = list(input().split())
mark = n // 2 + n % 2
answer = []
for i in range(n // 2):
answer.append(cards[i])
answer.append(cards[i + mark])
if n % 2 == 1:
answer.append(cards[n // 2])
print(f"#{test_case} {' '.join(map(str, answer))}")
mark
에 저장한다.0
부터 n // 2 - 1
까지 mark
를 기준으로 왼쪽에 있는 덱에서 한 개, 오른쪽에 있는 덱에서 한 개를 꺼내서 answer
에 넣어준다.answer
에 넣어준다.🔗 문제 링크
T = int(input())
answer = []
for _ in range(T):
n = input()
while len(n) > 1:
n = str(sum(map(int, n)))
answer.append(n)
for i in range(T):
print(f"#{i + 1} {answer[i]}")
n
의 길이가 1
이 될 때까지 n
의 합으로 n
값을 업데이트해준다.