보호되어 있는 글입니다.

https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net C++ 투포인터 음수와 양수가 섞여있는 한 배열에서 두 원소의 합의 절댓값이 최소인 (0에 가까운) 두 원소를 찾는 문제 접근방법 처음엔 시간복잡도 때문에 정렬을 쓰면 안될 것 같았는데 퀵소트정렬을 쓰고 N번만 봐도 되면 통과되는 문제였다. 우선 오름차순 정렬 후 시작점과 끝점을 양 끝에 두고 시작한다. 두 원소의 합을 비교하면서 포인터를 이동하는건데 이때 두 원..

https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net C++ DP 최장 공통 부분 수열 두 문자열 ACAYKP CAPCAK가 있으면 공통된 부분수열의 최장길이를 출력하는 문제 ACAYKP CAPCAK의 경우 ACAYKP CAPCAK 로 ACAK이므로 4이다. 접근방법 부분수열이 양 문자열에서 시작하는 위치도 끝나는 위치도 문자열의 처음부터 끝부분까지 고려되어야 하기 때문에 2차원배열을 사용하여 DP로 풀어..

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 109) www.acmicpc.net C++ 그리디 알고리즘, 우선순위 큐 강의 시간표 (시작시간, 종료시간)이 주어지고 최소한의 강의실을 배정하여 강의실 개수를 출력하는 문제 접근방법 그리디 문제 중에 이런 문제는 처음 봐서 좀 헤맸다. 처음엔 브루트포스인가 싶어서 이중포문으로 돌렸었는데 역시 시간복잡도 때문에 아니었던 것 같다. 우선순위큐 두개를 사용해서 풀이한다. 하나는 모든 강의 시간표가 시작시간의 오름차순으로 정렬되어있다(시작시간이 같을 경우 종료시간 오름차순) : pq ..

https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net C++ 투포인터 구간의 정해진 크기만큼의 합이 최대인 값을 구하는 문제 접근방법 구간이 정해져있어서 s와 e를 한번에 한칸씩 오른쪽으로 옮기면서 최대합을 갱신하면 된다. 처음에 시작할때 s = 0 , e = k-1 구간의 합을 구해서 sum의 초기값으로 대입한다. 그 후에 e가 n-1보다 작을때까지 반복문을 돌면서 최대합 갱신 while문을 나올때 e = n-1 이어야 배열의 마지막 ..

https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net C++ 투포인터 투포인터문제인데 전의 유형들과는 다른 문제 정렬되어 있는 두 배열을 하나의 정렬된 배열로 (정렬 알고리즘을 쓰지 않고) 합치는 문제 이걸 1학년때 프로그래밍 과목 과제로 나왔었다. 정말 똑같음 접근방법 두개의 배열을 합치는데 배열 당 하나씩 포인터를 갖는다. 정렬되어있는 배열이라고 했으므로 앞부터 하나씩 비교해서 작은 값을 결과 배열에 넣으면된다..

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 연결리스트 C++ 커서를 좌우로 옮기거나 커서 앞쪽 문자를 지우거나 커서 왼쪽에 문자를 추가하는 명령들을 수행한 후 최종 문자열을 출력하는 문제이다. 접근방법 이중연결리스트를 만들어서 풀었다. 오답노트 1. 문자열 받을때 배열크기 100001로 설정 '\0' 간과함 2. 출력할때 마지막에 "\n"해줘야함. 결과값이 늘 하나라 안해도 되는줄 알았는데 46분동안 헤매던게 결국 이거였음. 진짜 킹받음. ..

https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 우선순위 큐 C++ 하나의 수를 입력할때 마다 저장된 수들 중 중간값을 출력하는 문제 접근방법 최대힙과 최소힙을 모두 사용한다는 아이디어를 얻었다. 정렬된 수열을 반 잘라 앞부분은 최대힙에, 뒷부분은 최소힙에 저장해서 최소힙의 루트노드와 최대힙의 루트노드만 참조하여 중간값을 구하는 것이다. 물론 진짜로 반으로 나눠서 넣으면 안되고 입력받을 때마다 둘 중 한 곳에 push해야한다. ..

https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 이분탐색 Java (C++로 하려다가 xcode 맛가서 다시 java로 함..) 가장 긴 증가하는 부분 수열 2는 1과 달리 dp로 구하면 안되고 이분탐색으로 구해야한다. N (1 ≤ N ≤ 1,000,000) 수열의 크기가 이렇기 때문에. 접근방법 도저히 모르겠어서 서치해서 공부했다. 핵심 개념은 이 두가지라고 생각하는데 증가하는 수열을 리스트로 선언해두고 배열을 하나씩 탐색하면서 수열의 가장 ..

https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 스택 Java 주어진 수열에서 각 원소마다 본인의 오른쪽에서 가장 가까운 본인보다 큰 수를 출력하는 문제 접근방법 이 문제의 포인트는 바로 스택에 오큰수가 될 수 있는 후보들을 저장하고 있다고 생각하고 스택에서 위에 있는 수가 아래에 있는 수보다 항상 커야한다는 점을 생각해야한다! 따라서 스택의 top이 본인보다 작다면 pop해줘야 한다. 스택에는 나(top이 될)보다 큰 값들만 들어있어야 한다. 그렇지 않으면..
- Total
- Today
- Yesterday
- 다이나믹프로그래밍
- dp
- BFS
- dfs
- 백트래킹
- 투포인터
- 최단경로
- 수학
- 최소힙
- 브루트포스
- 그리디알고리즘
- Swift
- 동적계획법
- 백준
- 토마토
- 자바
- 최대힙
- 웹크롤링
- 프로그래머스
- 우선순위큐
- 이분탐색
- 정렬
- 게임이론
- 파이썬
- 트리
- 스택
- 가장 큰 수 프로그래머스
- c++
- 알고리즘
- 가장 큰 수 Swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |