일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C#강의
- spring
- 누적합
- 1일1솔
- JPA
- 연관관계
- 인프런
- BFS
- Python
- Java
- pypy3
- 그리디 알고리즘
- DP
- unity
- 브루투포스
- 우선순위큐
- popleft
- 파이썬
- 합 구하기
- 프로그래머스
- c#
- 백준
- deque
- appendleft
- 소수판별
- 소수찾기
- mvc
- 완전탐색
- LCM
- python3
- Today
- Total
목록알고리즘 문제 (90)
jae_coding

문제 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 구현 10,000 이하의 자연수로 이루어진 길이 N짜리 수열 조건 1. 연속된 수들의 부분합 중 합이 S이상 되는 것 2. 가장 짧은 것의 길이를 구하라 범위 N: 10 ~ 100,000 S: 0 ~ 100,000,000 각 수열의 원소: 10000이하의 자연수 출력 구하자고 하는 최소의 길이 불가능하다면 0 출력 코드 import sys input = sys.stdin.rea..

문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 구현 0의 개수: fib(n-1)의 값과 동일 1의 개수: fib(n)과 동일 코드 import sys input = sys.stdin.readline def fib(num, memo): if num == 0: return 0 elif num == 1: return 1 else: if num not in memo: memo[num] = fib(num-1, memo) + fib(num-2, memo) return memo[num] else: return memo[num] t = int(in..

문제 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 구현 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산 (x > 0) -. heapq.heappush() 메서드 이용 양수의 정수, 즉 자연수가 아니라면 heap list가 존재한다면 제거 -. heapq.heappop() 메서드 이용 만약 리스트가 비어있는데 0이 나온다면 0출력 코드 import sys, heapq input = sys.stdin.readl..

문제 https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 구현 시작점: 왼쪽 맨위, 종료점: 오른쪽 맨 아래 구간: N x N matrix (2

문제 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 구현 Fn = Fn-1 + Fn-2 (n ≥ 2) 피보나치 함수 구현 함수를 구현하는데 메모리 최적화와 시간을 줄이기 위해서 dictionary를 이용해서 연산과정의 시간을 줄일 수 있었다. 물론 n이 20이하의 자연수라 시간초과는 딕셔너리를 사용하지 않아도된다. 하지만 추후 메모리 문제와 시간초과를 관리해주는 것이 좋다. 코드 import sys in..

문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 구현 1. N 단어의 수를 입력 받는다. 2. 단어를 list로 char단위로 dict를 이용하여 dict내에 없다면 dict에 추가를 시킨다 3. 만약 dict 내에 char가 있다면 이전 단어와 동일한지 확인하는 알고리즘을 통하여 확인하고 만약 동일하지 않으면서 dict안에 존재한다면 그것은 True를 return하여 예외처리해준다. 4. 예외처리가 되지 ..

문제 https://www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net 코드 import sys input = sys.stdin.readline t = int(input()) for i in range(1, t+1): a, b = map(int, input().split()) print("Case #" + str(i) + ": " + str(a+b)) 느낀점 입력 받은 값과 수학연산, 그리고 스트링 출력에 대한 기본적으로 알고있는지에 대한 테스트라고 느꼇습니다.

문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. Solution code def solution(nu..

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..

문제 문제 링크 문제 접근 BFS를 풀때와 비슷하게 상하 좌우를 비교하며 좋아하는 학생이 있을 때, 좋아하는 사람의 수를 활용 sort의 우선순위를 이용하여 학생의 자리 배치. 코드 import sys input = sys.stdin.readline n = int(input()) student_list = list([0] * n for _ in range(n)) d = [(-1, 0), (1, 0), (0, -1), (0, 1)] students = list() for _ in range(n ** 2): # index 0: 학생의 번호, 나머지: 좋아하는 학생의 번호 student = list(map(int, input().split())) # 전체 학생들 리스트 생성하기 students.append(s..