14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 다른 분들이 훨씬 더 간단하게 푼 것 같습니다. 양쪽 벽 중 짧은 쪽을 선택하여 세로로 빗물 양을 세는 방식이더라고요. 저는 가로로 세는 방식으로 풀었는데, 코드가 좀 복잡하지만 여기에 남깁니다. POINT 블록 좌표를 따로 저장하여 왼쪽 아래 블록부터 오른쪽 위 블록 순서대로 검사한다. 각 블록에서 출발하여 오른쪽 방향으로 검사하며 빗물 양을 카운트한다. 검사하다가 다른 블록을 만나면, 이제까지 센 빗물 양(count)을 answer 변수에 저..
18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net POINT 조합 Combinations 빈 좌표 배열에서 3개를 뽑는 조합을 사용하여, 장애물을 세운다. DFS 장애물을 세운 후, 선생님을 상하좌우로 한 칸씩 계속 이동시킨다. 장애물을 만나거나 벽에 다다르면, 다른 방향 감시하기 학생을 만나면, 감시를 종료하고 결과("NO") 출력하기 문제풀이 const fs = require("fs"); const input = fs.readFileSync("/dev/stdin").toString().trim().s..
14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net POINT DFS 주어진 연산자를 순열 알고리즘을 사용해서 풀었으나, 중복된 연산이 많고 비효율적이라 메모리 초과가 발생한다. → 한 연산에서 시작하여 나머지 연산을 수행하는 모든 경우를 구하기 위해 DFS를 사용한다. -0 JS에서는 -0이 출력이 된다. 백준에서 -0은 0이 아니므로 오답이다. 결과가 -0이면 0으로 바꿔주자. 문제풀이 const fs = require("fs"); const input =..
14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net POINT Dynamic Programing (dp) 피보나치 수열이 대표적인 예시이다. 1. 큰 문제를 작게 나눌 수 있고, 2. 작은 문제에서 구한 결과가 큰 문제에서도 사용되면 Dynamic Programing을 사용한다. 재귀(Top-down), 반복(Bottom-up) 두 가지 방법이 있으며, 시간 복잡도를 고려해서 보통 반복문을 사용한다. 풀이 특이한 점은 dp를 거꾸로 적용해야 한다는 점이다. i 번째 날 수익이 그 이후 i + t번째 날에 영향을 받기 때문이다. i 번째 날의 수익을 더할지 말지 판단할 때, 그 상담이 끝난 후가 퇴사 전이어야 수익을 더할 수 있다. 반대로 i 번째 날 ..
6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net POINT Brute Force 모든 경우의 수를 탐색하여 정답을 찾는다. 즉, 전체 탐색을 사용한다. (순차 탐색, BFS, DFS 등) Backtracking + DFS = Combinations 백트래킹과 DFS를 함께 사용하여 조합을 구현한다. 풀이1️⃣ 조합 내장함수(combinations)를 사용한다. from itertools import combinations while True: data = list(map(int, input().sp..
1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net POINT Brute Force 모든 경우의 수를 탐색하여 정답을 찾는다. 전체 탐색을 사용한다. (순차 탐색, BFS, DFS 등) Backtracking + DFS = Combinations 백트래킹과 DFS를 함께 사용하여 조합을 구현한다. 풀이 Python은 조합을 구현한 내장 함수가 있기 때문에 풀이도 내장함수를 사용한 방법과 아닌 방법으로 두 가지이다. 방법1️⃣ 조합 내장 함수(combinations)를 사용한다...
- Total
- Today
- Yesterday
- 웅진IT
- Python3
- DP
- 코딩테스트
- 백준
- flutter
- 키워드밑줄
- rn
- 동기
- 코어자바스크립트
- React.js
- React
- React-native
- 코드분석
- 코테
- 비동기
- 판례암기
- 프로젝트
- node.js
- dfs
- 감시피하기
- fetch
- Spotify
- p5js
- 파이썬
- 프로그래머스
- backtracking
- python
- Unsplash
- 다이나믹프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |