5515 2016년 요일맞히기
info = [31,29,31,30,31,30,31,31,30,31,30,31]
r = {0:3,1:4,2:5,3:6,4:0,5:1,6:2} # 요일에 대응되는 숫자
for tc in range(int(input())):
m,d = map(int, input().split())
print("#{} {}".format(tc+1, r[d%7] if m==1 else r[(sum(info[:m-1])+d)%7]))
1208 Flatten
접근법 : 정렬 -> 최대최소 차이비교 -> 반복 ... 만약 차이가 1과 같거나 작아지면 이제 의미 없는 블록 옮기기라 탈출
for tc in range(10):
N = int(input())
blocks = sorted(list(map(int, input().split())))
while N > 0:
blocks[-1] -= 1
blocks[0] += 1
blocks.sort()
if blocks[-1]-blocks[0] <= 1:
break
N -= 1
print("#{} {}".format(tc+1, blocks[-1]-blocks[0]))
4466 최대성적표만들기
r = []
for tc in range(int(input())):
N,K = map(int, input().split())
scores = sorted(list(map(int, input().split())))
r.append("#{} {}".format(tc+1, sum(scores[N-1:N-1-K:-1])))
print("\n".join(r))
1229 암호문2
for tc in range(10):
a = int(input())
b = list(map(int, input().split()))
c = int(input())
d = list(input().split())
for i in range(len(d)):
if d[i] == 'I':
idx = int(d[i+1])
nums = int(d[i+2])
for j in range(nums):
b.insert(idx+j,int(d[i+2+(j+1)]))
elif d[i] == 'D':
idx = int(d[i+1])
nums = int(d[i+2])
for j in range(nums):
del b[idx]
else:
continue
print('#{} {}'.format(tc+1,' '.join(map(str,b[:10]))))
3142 영준이와 신비한 뿔의 숲
어렵게 고민하는것보다 학교다닐 때 배웠던 관계식 만들면 시간복잡도 상수로 풀이 가능
for tc in range(int(input())):
n,m = map(int, input().split())
print("#{} {} {}".format(tc+1,2*m-n,n-m))
만약 상수식으로 풀지 않는다면,
for tc in range(int(input())):
n,m = map(int, input().split())
tmp = n//2
while tmp >= 0:
if 2*tmp + (m-tmp) == n:
break
tmp -= 1
print("#{} {} {}".format(tc+1,m-tmp,tmp))
'Problem Solving > SWEA' 카테고리의 다른 글
[ SWEA ] D3 - 3499, 5162, 1206, 5356 - python 문제풀이 (0) | 2021.07.13 |
---|---|
[ SWEA ] D3 - 10804, 10200, 6692, 5789 - python 문제풀이 (0) | 2021.07.08 |
[ SWEA ] D3 - 3456, 1209, 9700, 5549 - python 문제풀이 (0) | 2021.07.06 |
[ SWEA ] D3 - 11688, 5431, 2805, 1228 - python 문제풀이 (0) | 2021.07.05 |
[ SWEA ] D3 - 1213, 1234, 1240, 3314, 4751 - python 문제풀이 (0) | 2021.07.02 |
댓글