https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 우선순위 큐 이번엔 비교로직을 구현해야하는 문제 operator 오버로딩해서 절댓값으로 비교하게 하면 된다. 소스코드 #include #include #include #include using namespace std; struct cmp{ bool operator()(int a, int b){ if( abs(a) == abs(b) ) return a > b; else ret..
https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 우선순위 큐 최소 힙이라 비교로직만 바꿔주면 된다. less 대신 greater로 이번엔 greater자리에 비교연산만 구현해서 넣어봤다. 오름차순이라 a b 였다.. 소스코드 #include #include #include using namespace std; struct cmp{ bool operator()(int a, int b){ r..
https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 우선순위 큐 시간제한이 칼같길래..힙 구현해서 풀어야하는줄알고 오랜만에 힙을 다시 공부했는데 STL로 그냥 풀리는 문제였다..기왕한거 최대힙을 구현해서 풀어봤다. 오답노트 시간초과가 한번 났는데 cin tie 끊고 sync_with_stdio false로 하니 풀렸다. 소스코드 priority_queue STL version (AC) #include #include #inclu..
https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 동적계획법 핵심 로직 dp[i][j] = dp[i][mid]+dp[mid+1][j] + 누적합(최상위 노드값) 3중 for문을 도는데 첫번째 반복문은 gap 그러니까 범위다 start~end 범위 크기를 1부터 chapter수인 K-1개까지 반복한다. (그럼 마지막 반복문을 돌면 0~K-1까지를 구할 수 있음) 두번째 반복문은 start~end범위 내에서 start의 위치를 한칸씩 뒤로 ..
www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net C++ 구현 오늘은 2020-21 동계 알고리즘 스터디 마지막날 하지만 쉬어갑니다 :) 6과 9를 뒤집어서 이용할 수 있다는 점이 포인트인 문제 접근방법 기본적으로는 모든 숫자들이 필요한 개수를 배열에 저장하고 그 중에 가장 큰 값이 필요한 숫자 세트의 개수이다. 근데 6과 9는 예외적으로 생각해줘야하니까 마지막에 6의 개수를 저장하고 있는 곳에 9의 개수를 더하고 2로 나눈후 올림해준다. 그리고 9의 개수를 저장하고 있는 곳의 값을 0으로 바꿔준다. 그리고 나서 0부터 9까지의 숫자 개수 중 가장 ..
www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net C++ 큐 이번주 후반부는 쉬어갑시다 접근 방법 K번째 사람을 큐에 순서대로 넣고 마지막에 큐에서 빼면서 출력했다. 아직 큐에 넣지 않은 사람(방문하지 않은 인덱스)이 나올때마다 cnt++을 해주고 cnt가 k가 되면 그 사람을 큐에 넣고 cnt를 0으로 초기화했다 인덱스가 n의 범위를 넘어가면 안되므로 i = (i+1)%n으로 해줬다. 오답노트 i를 증가시키는 코드를 if문 안에 넣어놔서 무한루프가 돌았었다. 소스코드 #include #include using namespace std; bool vi..
www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net C++ 그리디 알고리즘 좀 쉬어가려고 그리디 풀었는데 그리디 무려 5개월만에 풀어서 좀 낯설었다. 접근방법 지금까지의 최저가를 갖고 가다가 그 최저가 보다 더 적은 값을 만나면 거기까지는 지금까지의 최저가로 주유해서 간 다음 그 이후부턴 그 주유소에서 주유하는 식 오답노트 거리랑 금액이 모두 최대가 int최대범위여서 total금액과 중간중간 거리를 더하는 변수는 long long 타입을 써줘야한다..
www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net C++ 다익스트라 문제가 간결한 것에 비해 걸린 시간이 매우 김. 역시 골드는 만만하게 봐선 안돼 우선순위큐를 사용해서 다익스트라로 풀이하는 문제입니다. 접근방법 인접행렬을 사용했고, 우선순위큐를 사용했습니다. 방문 여부는 큐에서 뽑은 거리가 이미 그 노드까지의 최단경로와 같다면 그 노드에 대해서는 처리하지 않고 넘어가는 식 오답노트 우선순위 큐 안써서 시간초과 났었음 근데 우선순위 ..
www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net C++ BFS 그래프 문제 접근방법 일단 정점을 담는 두 집합이 있다고 가정하고, 처음엔 그래프를 탐색하면서 인접한 노드는 다른 집합에 넣고 마지막에 두 집합의 교집합이 공집합이 아닌지 확인해서 결과를 출력했다. 근데 이렇게 하면 우선 이 문제에서 그래프는 모든 경우 연결그래프라고 가정하고 있지 않고, 무엇보다 시간초과가 났다. 그래서 갈아엎었다 ^_^ 방문여부를 저장하는 배열에 0,-1,1을 저장..
www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net C++ BFS 나이트가 있는 칸, 도달하려는 칸 인덱스가 주어지고 나이트가 도달하려는 칸까지 가는 최단거리를 구하는 문제 나이트가 이동할 수 있는 칸은 위의 사진과 같다. 접근방법 나이트가 현 위치에서 갈 수 있는 칸(8개)을 인접한 노드라고 생각하고 그래프 BFS 최단거리 문제로 풀었다. 숨바꼭질 문제랑 유사하다. distances배열과 visit배열을 사용한다. 오답노트 제출전에 디버깅에서 런타임에러가 걸렸었..
- Total
- Today
- Yesterday
- 정렬
- 동적계획법
- 토마토
- 이분탐색
- 수학
- 스택
- BFS
- Stack
- 웹크롤링
- 최소힙
- 문자열
- 브루트포스
- dp
- 게임이론
- 백트래킹
- dfs
- 자바
- 알고리즘
- 그리디알고리즘
- Swift
- 최단경로
- 우선순위큐
- 프로그래머스
- 파이썬
- 다이나믹프로그래밍
- c++
- 백준
- 트리
- 투포인터
- 최대힙
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |