일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 그리디 알고리즘
- deque
- popleft
- spring
- 합 구하기
- python3
- 완전탐색
- mvc
- 소수찾기
- 연관관계
- 프로그래머스
- unity
- 누적합
- pypy3
- appendleft
- 우선순위큐
- LCM
- DP
- 브루투포스
- 소수판별
- Python
- BFS
- 파이썬
- 인프런
- Java
- c#
- C#강의
- 백준
- JPA
- 1일1솔
- Today
- Total
목록알고리즘 문제/백준 (42)
jae_coding

문제 문제 링크 문제 접근 누적합 누적합의 최댓값과 누적합의 최댓값의 갯수 찾기 만약 누적합의 최댓값이 0이면 SAD 출력 코드 import sys input = sys.stdin.readline n, x = map(int, input().split()) visited_num = list(map(int, input().split())) s = list() temp = sum(visited_num[:x]) s.append(temp) for i in range(n-x): temp = temp - visited_num[i] + visited_num[x + i] s.append(temp) if max(s) == 0: print("SAD") else: print(max(s)) print(s.count(max(s)))

문제 문제 링크 문제 접근 누적합 input 리스트 생성 0번째 인덱스부터 차례대로 n-1번째까지 누적합 구하기 a ~ b이면 누적합 b - 누적합 a를 구해준다 (시작점이 1인점은 제외) 코드 import sys input = sys.stdin.readline n = int(input()) # 입력 리스트 a = list(map(int, input().split())) # 누적합 구하기 s = list() s.append(a[0]) for i in range(1, n): s.append(s[i-1] + a[i]) m = int(input()) for i in range(m): start, end = map(int, input().split()) if start == 1: print(s[end-1]) e..

문제 문제 링크 문제 접근 에라토스테네스의 체 알고리즘 사용 에라토스테네스 위키피디아 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 코드 import sys input = sys.stdin.readline a, b = map(int, input().split()) result = 0 array = [True for _ in range(int(pow(b, 0.5)) + 1)] # 에라토스테네스의 체 (10 ** 7까지 리스트 적용) for i in range(2, int(pow(b, 0.5)) + 1): if array[i]: j = 2 while i * j

문제 문제 링크 문제 접근 숫자가 1보다 작거나 같으면 소수가 아니다. 2로 나누어 떨어진다면 소수가 아니다. (2일 경우는 제외) 3이상일 경우에 루트를 씌운 값보다 작을 경우 나누어서 0 일 경우에는 소수가 아니다. 나머지 경우에는 소수가 된다. 리스트에서 소수인 경우의 수를 합하면 결과값이 도출된다. 코드 import sys input = sys.stdin.readline def is_prime_number(number): if number

문제 문제 링크 코드 import sys from itertools import product input = sys.stdin.readline n, m = map(int, input().split()) if n == 1: print(int(input())) else: lst = list(map(int, input().split())) lst.sort() for i in product(lst, repeat=m): print(*i)

문제 문제 링크 코드 list사용 코드 import sys input = sys.stdin.readline n = int(input()) array = [0] * 10001 for _ in range(n): array[int(input())] += 1 for i in range(10001): num = i if array[i] != 0: for _ in range(array[i]): print(i) dict사용 코드 import sys input = sys.stdin.readline n = int(input()) memo = dict() lst = list() for _ in range(n): temp = int(input()) if temp not in memo: memo[temp] = 1 else: ..

문제 문제 링크 문제 접근 N의 범위가 20만으로 매우크기 때문에 for문을 2번이상 돌리는 것은 효율적이지 않다고 생각했다. 자료구조인 dictionary를 이용하는 것이 효율적이라고 생각한다. 코드 import sys input = sys.stdin.readline N, K = map(int, input().split()) lst = list(map(int, sys.stdin.readline().split())) memo = {0: 1} sum_value = 0 result = 0 for val in lst: sum_value += val # 이전 누적값에서 - K인 것이 존재한다면 result에 추가해줌 if sum_value - K in memo.keys(): result += memo[sum_v..

문제 문제 링크 문제 접근 N(짝수): 동굴의 길이 H: 동굴의 높이 종유석과 석순이 번갈아가면서 등장한다 종유석: 아래에서부터 등장 석순: 위에서부터 등장 짝수번째 인덱스: 종유석, 홀수번째 인덱스: 석순으로 지정후 리트스 추가 코드 import sys N, H = map(int, sys.stdin.readline().split()) up = [0] * (H+1) down = [0] * (H+1) count = [0] * (H+1) for i in range(N): temp = int(sys.stdin.readline()) if i % 2 == 0: down[temp] += 1 else: up[H-temp+1] += 1 for j in range(H-1, 0, -1): down[j] += down[j+..