일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기술면접
- upper_bound
- 매개변수탐색
- 13908
- 연결요소
- incr
- boj #19237 #어른 상어
- compose
- dfs
- 파라메트릭
- Docker
- BFS
- 소프티어
- 6987
- 처우산정
- 물채우기
- softeer
- @P0
- 백준
- 경력
- 백트래킹
- 이분탐색
- Kafka
- 퇴사통보
- 오퍼레터
- 처우협의
- BOJ
- 성적평가
- OFFSET
- msSQL
- Today
- Total
목록알고리즘 문제 (501)
기술 블로그
https://www.acmicpc.net/problem/12018 boj 복습 생각 그리디 탐욕 우선 각 수강 과목에 넣은 마일리지를 내림차순 정렬을 한다. 이후에 수강 인원을 고려하여 그 과목을 수강할 수 있는 최소의 마일리지를 구한다. 구한 마일리지들을 다시 오름차순 정렬을 한다. 그 이후로 주어진 마일리지(m)을 활용하여 Greedy하게 답을 구해준다. 처음 제출했을 때 틀렸었는데, 45 ~ 47번 째 줄처럼 작성했었다. 생각해보니 L이 마일리지 신청한 인원보다 클 때는 성준이가 무조건 수강할 수 있으므로 최소의 마일리지인 1을 부여한다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849..
https://www.acmicpc.net/problem/18185 Greedy 그리디 탐욕 boj 백준 복습 필수 추천 dp 수학 등차수열 무조건 3개의 공장에서 라면을 구매할 수 있는 경우가 있으면, 3개 공장을 먼저 처리하는 문제인줄 알았다.즉, 3 → 2 → 1 이런 순서로 진행하는 줄 알았다. 하지만, 반례가 있었는데 https://www.acmicpc.net/board/view/47049 41 2 1 1wrong : 13correct : 12 1 1 1을 먼저 구매해버리면, 뒤에 하나의 공장에서 구매하는 것이 2번 일어나므로 7 + 2 * 3 = 13이 나오게 된다. 그러나, 1 1을 먼저 구매하고, 뒤이어 1 1 1을 구매하면, 5 + 7 = 12로 최소 비용을 구할 수 있게 된다. 즉, a..
https://www.acmicpc.net/problem/1826 복습 코테 코딩 Greedy 힙 우선순위큐 그리디 코딩 필수 추천 백준 boj End : 성경이의 위치에서 마을까지의 거리oil : 트럭에 원래 있던 연료의 양 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#include using namespace std; int n, End, oil;vector v;priority_queue pq; int main(){ cin.tie(0); scanf("%d", &n); int a, b; for (int i = 0; i
https://www.acmicpc.net/problem/16920 1부터 숫자들의 위치를 저장하고, bfs를 갈 수 있는 거리만큼 실행한다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#include using namespace std; #define Max 1010 int n, m, p, path[Max], answer[Max];int dy[4] = { 0, 1, 0, -1 };int dx[4] = { 1, 0, -1, 0 };char M..
https://www.acmicpc.net/problem/17075 왜 0ms인지 질문 : https://www.acmicpc.net/board/view/48091 dp 메모이제이션 캐시 cache 복습 코테 필수 추천 냅색 boj 백준 2019 연세대학교 컴퓨터과학과 프로그래밍 경진대회 D번 한 점에 대해서 모든 경우의 수들을 탐색. t 2차원 배열은 -1인 곳에서 얼마만큼 사용을 했는지 "사용 횟수"로 접근했었다. 그러나 시간이 900ms가 넘었다. 정답자 분들 중 코드를 참고하였더니, 공식같은 것이 있었다. 사실 공식은 아니지만 조금만 더 생각해보면 접근할 수 있었던 식이다. 나는 그냥 아무 생각없이 for문 돌리면 되겠다 싶어 다른 방법은 생각하지 않았다. 해당 좌표(i, j)를 포함하는 나올 수..
https://www.acmicpc.net/problem/13302 dp 캐시 cache 메모이제이션 다이나믹 동적계획 각각의 경우에 따라 구현 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include using namespace std; #define Max 111#define INF 2e9 int n, m, dp[Max][Max];bool rest[Max]; int simulation(int day, int cp){ if (day > n) { return 0; } int &ret = dp[day][cp]; if (ret != -1)..
https://www.acmicpc.net/problem/10158 팁 Tip 1234567891011121314151617181920212223242526272829303132333435363738394041#include using namespace std; int w, h, y, x, t; int main(){ cin.tie(0); // 나는 2차원 격차 공간을 시계 방향으로 한 번 90도 회전시켰다. scanf("%d %d %d %d %d", &w, &h, &y, &x, &t); swap(w, h); // 회전 int ww = (x + t) / w; // 가로 방향(ㅡ)으로 움직일 때, 경계에 닿는 횟수 int hh = (y + t) / h; // 세로 방향(ㅣ)으로 움직일 때, 경계에 닿는 횟수..
https://www.acmicpc.net/problem/11266 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384#include using namespace std; #define Max 100001#define INF 2e9 int dfn[Max], low[Max], V, E, number;vector v[Max], cut;bool cv[Max]; // x의 자식 노드가 x를 거치지지 않고, 도달할 수 있는 정점 중 가장 먼저 dfs 함수가 방문한 정점을 반환int ..