[Coding Test]/[백준]

    [백준] 2902 파이썬(python) : KMP는 왜 KMP일까?

    [백준] 2902 파이썬(python) : KMP는 왜 KMP일까?

    2902번 : KMP는 왜 KMP일까? import sys string = sys.stdin.readline().split('-') res = "" for char in string: res += char[0] print(res)

    [백준] 3273 파이썬(python) : 두 수의 합

    [백준] 3273 파이썬(python) : 두 수의 합

    3273번 : 두 수의 합 import sys n = int(sys.stdin.readline()) number = list(map(int, sys.stdin.readline().split())) x = int(sys.stdin.readline()) number.sort() start, end = 0, n-1 cnt, tmp = 0, 0 while start x: end -= 1 else: cnt += 1 start += 1 end -= 1 print(cnt) 투 포인터 문제인데 start 포인터와 end 포인터의 초기값이 왜 리스트의 시작과 끝을 가리키는지 이해해야 한다..

    [백준] 2003 파이썬(python) : 수들의 합 2

    [백준] 2003 파이썬(python) : 수들의 합 2

    2003번 : 수들의 합 2 import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) start, end = 0, 0 cnt = 0 tmp = number[0] while True: if tmp = n: #1 break tmp += number[end] elif tmp == m: cnt += 1 tmp -= number[start] start += 1 else: tmp -= number[start] start += 1 print(cnt) #1 : end포인터가 n을 초과하지 않을때까지 반복, 인덱스 에러를 막기 위해 break..

    [백준] 1940 파이썬(python) : 주몽

    [백준] 1940 파이썬(python) : 주몽

    1940번 : 주몽 import sys n = int(sys.stdin.readline()) m = int(sys.stdin.readline()) number = list(map(int, sys.stdin.readline().split())) number.sort() #1 cnt, tmp = 0, 0 start, end = 0, n-1 #2 while start m: #6 end -= 1 else: #7 cnt += 1 start += 1 end -= 1 print(cnt) #1 : 재료들을 고유한 번호에 따라 정렬 #2 : 두 개의 포인터가 각각 끝을 가..

    [백준] 2018 파이썬(python) : 수들의 합 5

    [백준] 2018 파이썬(python) : 수들의 합 5

    2018번 : 수들의 합 5 import sys n = int(sys.stdin.readline()) start, end = 0, 0 cnt, tmp = 0, 0 while end n: #3 tmp -= start start += 1 else: #4 cnt += 1 end += 1 tmp += end print(cnt) #1 : end포인터가 n의 값을 초과하지 않을때까지 반복 #2 : 현재 누적값이 n보다 작을때 end포인터 1증가 후 현재값에 누적합 #3 : 현재 누적값이 n보다 클때 start포인터의 값을 누적값에서 뺀뒤 start포인터 증가 #4 : 누적값과 n이 같은 경우 cnt 1증가 end포인터 1증가 그리고 누적값에 end포인터의 값 추가 (이 다음 #3이 수행될것) O(n^2)로 풀면 시..

    [백준] 11659 파이썬(python) : 구간 합 구하기 4

    [백준] 11659 파이썬(python) : 구간 합 구하기 4

    11659번 : 구간 합 구하기 4 import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) sum_number = [0] * (n + 1) tmp = 0 for i in range(n): tmp += number[i] sum_number[i+1] = tmp for _ in range(m): a, b = map(int, sys.stdin.readline().split()) print(sum_number[b-1+1] - sum_number[a-1]) 누적 합 알고리즘