1from collections import deque 2 3def solution(queue1, queue2): 4 sum1, sum2 = sum(queue1), sum(queue2) 5 dq1 = deque(queue1) 6 dq2 = deque(queue2) 7 cnt = 0 8 9 while cnt <= len(queue1)*2+1 and sum1 != sum2: 10 if sum1 > sum2: 11 tmp = dq1.popleft() 12 dq2.append(tmp) 13 sum1 -= tmp 14 sum2 += tmp 15 elif sum1 < sum2: 16 tmp = dq2.popleft() 17 dq1.append(tmp) 18 sum1 += tmp 19 sum2 -= tmp 20 cnt += 1 21 22 return cnt if sum1 == sum2 else -1 ๋ฌธ์ ๊ธธ์ด๊ฐ ๊ฐ์ ๋ ํ๊ฐ ์ฃผ์ด์ง๋ค ๋ ํ์ ํฉ์ด ๊ฐ์์ง๋๋ก ํ์ ์์๋ฅผ ๊ตํํ ์ ์๋ ์ต์ ํ์๋ฅผ ๊ตฌํ๋ผ ํ์ pop์ ์ผ์ชฝ์์, push๋ ์ค๋ฅธ์ชฝ์์ ์ด๋ฃจ์ด์ง๋ค TC input queue1 : [3, 2, 7, 2], queue2 : [4 ,6, 5, 1]
1from collections import deque 2 3def solution(want, number, discount): 4 want_dict = dict() 5 answer = 0 6 7 for i in range(len(want)): 8 want_dict[want[i]] = number[i] 9 10 for i in discount[:10]: 11 if i in want_dict: 12 want_dict[i] -= 1 13 14 for i in range(0, len(discount)-9): 15 if all(map(lambda x: x <= 0, want_dict.values())): 16 answer += 1 17 18 if discount[i] in want_dict: 19 want_dict[discount[i]] += 1 20 if i+10 < len(discount) and discount[i+10] in want_dict: 21 want_dict[discount[i+10]] -= 1 22 23 return answer ๋ฌธ์ XYZ๋งํธ์์๋ ํ์์ ๊ฐ์
ํ๋ฉด 10์ผ๋์ ํ ์ธํํ์ ๋ฐ๋๋ค ํ ์ธํ๋ ์ ํ์ ํ๋ฃจ์ ํ๋์ฉ๋ง ๊ตฌ๋งคํ ์ ์๋ค ์ ํ์ด๊ฐ ์ํ๋ ์ ํ ๋ฆฌ์คํธ, ์ํ๋ ์ ํ์ ์๋ ๋ฆฌ์คํธ, ๋งํธ์์ ํ ์ธํ๋ ์ ํ ๋ฆฌ์คํธ๊ฐ ์ฃผ์ด์ง๋ค ์ ํ์ด๊ฐ ์ํ๋ ์ ํ์ ๋ชจ๋ ํ ์ธ ๋ฐ์ ์ ์๋ ํ์ ๋ฑ๋ก ๋ ์ง์ ์๋ฅผ ๊ตฌํ๋ผ TC input want: [“banana”, “apple”, “rice”, “pork”, “pot”]
1def solution(k, tangerine): 2 D = {} 3 for i in tangerine: 4 if i in D: 5 D[i] += 1 6 else: 7 D[i] = 1 8 D = sorted(D.items(), key=lambda x: -x[1]) 9 answer = 0 10 for _, num in D: 11 k -= num 12 answer += 1 13 if k <= 0: 14 break 15 16 return answer ๋ฌธ์ ๊ทค์ ๊ฐ์ k์ ๊ทค์ ๊ฐ์๋ฅผ ๋ด์ ๋ฐฐ์ด tangerine์ด ์ฃผ์ด์ง๋ค ๊ทค k๊ฐ๋ฅผ ๊ณ ๋ฅผ ๋, ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅธ ์ข
๋ฅ์ ์์ ์ต์๊ฐ์ ๊ตฌํ๋ผ TC input k: 6, tangerine: [1, 3, 2, 5, 4, 5, 2, 3]
1import math 2 3def solution(k, d): 4 answer = 0 5 6 for x in range(0, d+1, k): 7 a = math.floor((d**2-x**2)**0.5) // k + 1 8 answer += a 9 10 return answer ๋ฌธ์ 2์ฐจ์ ์ขํ ํ๋ฉด์์ (xk (x=0,1,2,3…), yk (y=0,1,2,3…)) ์ง์ ์ ์ ์ ์ฐ๋๋ค ์์ ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ d๊ฐ ๋์ผ๋ฉด ์ ์ ์ฐ์ง ์๋๋ค k์ d๊ฐ ์ฃผ์ด์ง ๋, ์ ์ด ์ด ๋ช ๊ฐ ์ฐํ๋์ง ๊ตฌํ๋ผ TC input k:2, d:4
ouput 6
1import heapq 2 3def solution(n, k, enemy): 4 heap = [] 5 cnt = 0 6 for i in enemy: 7 n -= i 8 heapq.heappush(heap, -i) 9 while n < 0: 10 k -= 1 11 if not heap or k < 0: 12 return cnt 13 tmp = -heapq.heappop(heap) 14 n += tmp 15 cnt += 1 16 return cnt ๋ฌธ์ n: ๊ฐ์ง๊ณ ์๋ ๋ณ์ฌ ์ k: ์ฌ์ฉํ ์ ์๋ ๋ฌด์ ๊ถ ์คํฌ ์ enemy: ๋ผ์ด๋๋ง๋ค ์กด์ฌํ๋ ์ ์์ ๋ฐฐ์ด ๋ผ์ด๋๋ง๋ค enemy[i]๋ช
๋งํผ ์๋ชจํ์ฌ enemy[i]๋ง๋ฆฌ์ ์ ์ ๋ง์ ์ ์๋ค ๋ฌด์ ๊ถ์ ์ ์ ํ ์ฌ์ฉํ์ฌ ๋ฒํธ ์ ์๋ ์ต๋ ๋ผ์ด๋ ์๋ฅผ ๊ตฌํ๋ผ TC input n: 7, k: 3, enemy: [4, 2, 4, 5, 3, 3, 1]
1def solution(data, col, row_begin, row_end): 2 answer = 0 3 data.sort(key=lambda x: (x[col-1], -x[0])) 4 s = [] 5 for i in range(row_begin-1, row_end): 6 s.append(sum(map(lambda x: x%(i+1), data[i]))) 7 8 for i in s: 9 answer ^= i 10 return answer ๋ฌธ์ ํด์ ํจ์๋ col, row_begin, row_end์ ์
๋ ฅ์ผ๋ก ๋ฐ๋๋ค ํ
์ด๋ธ์ ํํ์ col๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋, ๋ง์ฝ ๊ทธ ๊ฐ์ด ๋์ผํ๋ฉด ๊ธฐ๋ณธํค์ธ ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ค ์ ๋ ฌ๋ ๋ฐ์ดํฐ์์ S_i๋ฅผ i ๋ฒ์งธ ํ์ ํํ์ ๋ํด ๊ฐ ์ปฌ๋ผ์ ๊ฐ์ i ๋ก ๋๋ ๋๋จธ์ง๋ค์ ํฉ์ผ๋ก ์ ์ํ๋ค row_begin โค i โค row_end ์ธ ๋ชจ๋ S_i๋ฅผ ๋์ ํ์ฌ bitwise XOR ํ ๊ฐ์ ํด์ ๊ฐ์ผ๋ก์ ๋ฐํํ๋ผ TC input data: [[2,2,6],[1,5,10],[4,2,9],[3,8,3]]
1def solution(cap, n, deliveries, pickups): 2 answer = 0 3 tempD = 0 4 tempP = 0 5 for i in range(n-1, -1, -1): 6 tempD += deliveries[i] 7 tempP += pickups[i] 8 9 while tempD > 0 or tempP > 0: 10 tempD -= cap 11 tempP -= cap 12 answer += (i+1)*2 13 return answer ๋ฌธ์ ํธ๋ญ์ ์ค์ ์ ์๋ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ์ต๋๊ฐ์ cap, ๋ฐฐ๋ฌํ ์ง์ ๊ฐ์ n ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ด์ deliveries, ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ด์ pickups๊ฐ ์ฃผ์ด์ง๋ค ํธ๋ญํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ผ TC input (cap, n, deliveries, pickups) 4, 5, [1, 0, 3, 1, 2], [0, 3, 0, 4, 0]