일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- programmers
- 종만북
- sorting
- graph
- 백준
- 생활코딩
- udemy
- web
- server
- C언어
- Python
- 인프런
- Math
- 정수론
- String
- BOJ
- BASIC
- DP
- 따라하면서 배우는 C언어
- 따라하며 배우는 C언어
- greedy
- JavaScript
- dfs
- Algospot
- Cleancode
- Algorithm
- 따배씨
- BFS
- php
- Today
- Total
목록Algorithm PS (127)
몽상실현개발주의
[BOJ] 11650 / 좌표 정렬하기 / Python 파이썬 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 [BOJ] 2751 / 수 정렬하기 2 문제와 마찬가지로 파이썬 배열의 정렬 내부 함수를 사용하였다. 파이썬의 정렬 함수의 기본은, 배열의 아이템들의 각 요소들도 오름차순으로 정렬을 해 준다. import sys N = int(sys.stdin.readline()) points..
[BOJ] 2751 / 수 정렬하기 2 / Python 파이썬 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 최대 입력이 1000000, 제한시간이 2초인 정렬 문제이다. O(N^2) 인 삽입정렬이나 버블정렬이 아닌 O(NlogN)인 고급 정렬로 풀어야 한다. 하지만, Python 배열 정렬 내부 함수인 sort() 가 O(NlogN) 이므로, 정렬을 직접 구현하지 않고 사용하였다. import sys N = int(sys...
[BOJ] 11052 / 카드 구매하기 / Python 파이썬 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 풀이 현재 index 까지의 부분 list 의 모든 경우의 수 중 가장 큰 경우를 구하여, 전체 경우에서의 가장 큰 값의 경우를 구하는 문제이다. [BOJ] 1699 / 제곱수의 합 / Python 파이썬 과 비슷한 유형의 문제 N = int(input()) Cards = [0] + list(map(int, input().split())) d..
[BOJ] 2011 / 암호코드 / Python 파이썬 https://www.acmicpc.net/problem/2011 2011번: 암호코드 나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다. www.acmicpc.net 풀이 암호 코드의 길이와 만들어지는 수에 따라 조건을 달리하여 경우의 수를 구하는 문제이다. 첫번째 자리의 암호 코드는 '0' 이 아닐때 1이 된다 i 번째 자리의 암호 코드 i 번째 숫자가 '0' 이 아닐 시, i-1 번째 경우의 수와 같다. i-1, i 번째 숫자를 두 자리 수인 하나의 숫자로 보았을 때, 10 ~ 26 이라면 i-2 의 경우의 수를 더해준..
[BOJ] 2133 / 타일 채우기 / Python 파이썬 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 풀이 경우의 수를 구하고, 점화식을 찾아 풀어 보았다. 블럭 문제의 경우 N 과 N-1 사이의 관계가 명확한 경우의 문제가 많으므로 점화식을 이용하여 간단히 풀 수 있는 것같다. N = 0 -> 1 N = 1 -> 0 N = 2 -> 3 N = 3 -> 0 N = 4 -> 11 N = 5 -> 0 N = 6 -> 41 N = 7 -> 0 1 3 11 41 .... 2 8 30 2 = 1 * 2 8 = (3 + 1) * 2 30 = (11 + 3 + ..
[BOJ] 1699 / 제곱수의 합 / Python 파이썬 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이 주어진 숫자와 제곱수와의 차이를 생각하는것이 문제의 해결 방법이었다. N = 1 -> 1 -> 1 N = 2 -> 1 + 1 -> 2 N = 3 -> 1 + 1 + 1 -> 3 N = 4 -> 2 -> 1 N = 5 -> 2 + 1 -> 2 N = 6 -> 2 + 1 + 1 -> 3 N = 7 ..
[BOJ] 2579 / 계단 오르기 / Python 파이썬 https://www.acmicpc.net/submit/2579/29254021 로그인 www.acmicpc.net 풀이 [BOJ] 2156 / 포도주 시식 과 유사한 문제이다. 포도주 시식 문제의 경우 마신다/마시지 않는다의 경우로 선택하지 않는 경우가 있지만, 이 문제의 경우 해당 index 의 계단을 밟지 않는 경우가 없어 고려되지 않는다. 그래서 현재 index 의 계단을 밟는 경우는 두가지가 된다. i-2 i-1 i ~ O X O ~ X O O N = int(input()) nums = [] for _ in range(N): nums.append(int(input())) dp = [0] * N dp[0] = nums[0] if N > 1..
[BOJ] 1912 / 연속합 / Python https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 연속된 수열 중 가장 큰 합을 갖는 수열의 합을 구하는 문제이다. 현재 index 의 값을 더했을때, 1. 이전의 값보다 더 큰경우는 더하여 기록하고 2. 더 작을 경우는 '수열의 합의 큰 수' 를 구하기 위해 현 위치에서 새로 수열을 시작한다. N = int(input()) nums = list(map(int, input().split())) dp = [..