본문 바로가기

투포인터9

[프로그래머스] Lv2 - 숫자의 표현 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr def solution(n): i, j = 1, 2 sum = 1 result = 0 while i != j: if sum < n: sum += j j += 1 else: if sum == n: result += 1 sum -= i i += 1 return result 투포인터 1. i, j, sum, result = 1, 2, 1, 0 초기.. 2022. 5. 17.
[백준] 15961번 - 회전 초밥 # 회전 초밥 from collections import defaultdict N, d, k, c = map(int, input().split()) arr = [int(input()) for _ in range(N)] arr += arr[:k-1] left, right = 0, k result = 0 dict = defaultdict(int) dict[c] += 1 for x in arr[left:right]: dict[x] += 1 while right < len(arr): result = max(result, len(dict)) dict[arr[left]] -= 1 dict[arr[right]] += 1 if dict[arr[left]] == 0: dict.pop(arr[left]) left += 1.. 2022. 5. 3.
[백준] 9007번 - 카누 선수 (파이썬) # 카누 선수 import sys input = sys.stdin.readline T = int(input()) for _ in range(T): k, n = map(int, input().split()) arr = [] for _ in range(4): arr.append(list(map(int, input().split()))) one, two = set(), set() for idx in range(0, 4, 2): for x in arr[idx]: for y in arr[idx+1]: one.add(x+y) if idx == 0 else two.add(x+y) one = sorted(list(one)) two = sorted(list(two)) # 투포인터 result = 0 diff = sys... 2022. 4. 8.
[백준] 3151번 - 합이 0 (파이썬) # 합이 0 from bisect import bisect_left N = int(input()) arr = list(map(int, input().split())) arr.sort() answer = 0 for i in range(len(arr)-2): left, right = i+1, N-1 while left 0: right -= 1 else: if result == 0: if arr[left] == arr[right]: answer += right - left else: idx = bisect_left(arr, arr[right]) answer += right-idx+1 left += 1 pri.. 2022. 4. 8.
[백준] 1253번 - 좋다 (파이썬) # 좋다 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) arr.sort() result = 0 for i, num in enumerate(arr): temp = arr[:i]+arr[i+1:] left, right = 0, len(temp)-1 while left num: right -= 1 elif temp[left]+temp[right] < num: left += 1 else: result += 1 break print(result) 투포인터 1. 입력을 받고 정렬을 해준다. 2. arr의 각 수 num마다 num을 .. 2022. 3. 29.
[백준] 3649번 - 로봇 프로젝트 (파이썬) # 로봇 프로젝트 while True: try: x = int(input())*10000000 n = int(input()) arr = [int(input()) for _ in range(n)] arr.sort() answer = [] left, right = 0, n-1 while left x: right -= 1 else: answer = [arr[left], arr[right]] break if answer: print('yes {0} {1}'.format(answer[0], answer[1])) else: print('danger') except: break 투포.. 2022. 3. 26.
[백준] 2473번 - 세 용액 (파이썬) # 세 용액 import sys input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) arr.sort() result = sys.maxsize three = [] for i in range(N-2): left = i+1 right = N-1 while left 0: right -= 1 else: break print(*th.. 2022. 3. 10.