3499 퍼펙트 셔플
접근법 : 규칙은 절반 나눠 번갈아가면서 출력하기때문에 for문을 절반만 돌되 짝/홀수 조건만 잘 고려해서 출력
res = []
for tc in range(int(input())):
n = int(input())
c = list(input().split())
r = []
for i in range(n//2):
r.append(c[i])
if n%2==0:
r.append(c[n//2+i])
else:
r.append(c[n//2+i+1])
res.append("#{} {}".format(tc+1, " ".join(r) if n%2==0 else " ".join(r+[c[n//2]])))
print("\n".join(res))
이 문제는 테스트케이스가 많아서인지 리스트에 담아 줄바꿈 join으로 푸는게 훨씬 빠름
5162 두가지 빵의 딜레마
접근법 : 싼 걸 많이 사자
for tc in range(int(input())):
A,B,money = map(int, input().split())
less, more = min(A,B),max(A,B)
print("#{} {}".format(tc+1,((money//less + (money-money//less*less)//more))))
1206 View
접근법 : 왼/오른쪽 범위 나눠서 중간인 현재의 내 크기가 제일 높은때, 내 값에서 좌우중 최대를 빼주면 됨
r = []
for tc in range(10):
n = int(input())
h = list(map(int, input().split()))
cnt = 0
for i in range(2,n-2):
if h[i-1]<h[i] and h[i+1]<h[i]:
left = max(h[i-1],h[i-2])
right = max(h[i+1],h[i+2])
if h[i] == max(left,right,h[i]):
cnt += h[i]-max(left,right)
r.append("#{} {}".format(tc+1,cnt))
print("\n".join(r))
5356 의석이의 세로로 말해요
접근법 : 단어들을 리스트에 넣어 계속 출력 후 원본을 갱신해주는 작업 반복, ['','','','','']의 형태가 되면 중단
res = []
for tc in range(int(input())):
board = [input() for _ in range(5)]
r = ''
while True:
for i in range(5):
if board[i]: # 붙일글자가 있으면
r += board[i][0] # 붙여라
board[i]=board[i][1:] # 붙였으면 앞으론 무시
if board == ['','','','','']: # 더이상 붙일 글자가 없으면
break
res.append("#{} {}".format(tc+1,r))
print("\n".join(res)) #빠름
'Problem Solving > SWEA' 카테고리의 다른 글
[ SWEA ] D3 - 1493 수의 새로운 연산 - python 문제풀이 (0) | 2021.07.13 |
---|---|
[ SWEA ] D3 - 1221, 10912, 4676 - python 문제풀이 (0) | 2021.07.13 |
[ SWEA ] D3 - 10804, 10200, 6692, 5789 - python 문제풀이 (0) | 2021.07.08 |
[ SWEA ] D3 - 5515, 1208, 4466, 1229, 3142 - python 문제풀이 (0) | 2021.07.07 |
[ SWEA ] D3 - 3456, 1209, 9700, 5549 - python 문제풀이 (0) | 2021.07.06 |
댓글