일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PCCE
- lock based stack
- dp
- 프로그래밍공부
- DirectX12
- pccp 기출문제 풀이
- 브루트포스
- lock free stack
- pcce 기출문제 풀이
- 지게차와 크레인
- lock based queue
- 2025 프로그래머스 코딩챌린지 1차예선
- LCS
- string construction
- ice cream parlor
- gas
- count triplets
- the longest increasing subsequence
- two characters
- c++
- DirectX
- find the running median
- the maximum subarray
- boj 6443
- making anagrams
- boj 11657
- special string again
- boj 1074
- boj 1717
- find the town judge
- Today
- Total
목록프로그래밍 공부/백준 알고리즘 (53)
오구의코딩모험

https://www.acmicpc.net/problem/1717 문제 3줄 요약1. n+1개의 집합이 있다.2. 합집합 연산과 두 원소가 같은 집합인지 판별하는 연산을 수행한다.3. 1로 시작하는 입력에 대해서는 포함 여부를 출력한다. 문제의 제한 사항을 확인해보면n은 최대 10^6 이므로 단순히 set를 이용한 집합 연산은 불가능하다고 생각하였다. 해당 문제에서는Disjoint-set(서로소 집합, 분리 집합)을 표현하는 Union-Find 알고리즘을 이용하였다. 해당 알고리즘이 익숙하지 않다면아래 영상을 참고하길 바란다!! https://www.youtube.com/watch?v=rE-OUyZJgOk 위와 같은 집합이 존재할 때,부모 정점 테이블을 이용하여 집합의 연결을 수행한다. 연결..

https://www.acmicpc.net/problem/11657 문제 3줄 요약1. N개의 도시가 있다. 1번 도시가 기준이다.2. 도시를 건너는 버스는 시작 도시, 도착 도시, 걸리는 시간(양수가 아닌 경우 존재)으로 표현한다.3. 나머지 도시로 가는 가장 빠른 시간을 구해라. 만약 시간을 무한히 오래 전으로 되돌릴 수 있다면 -1을 출력한다. 2번 도시부터 차례대로 시간을 출력하되해당 도시로 가는 경로가 없는 경우 또한 -1을 출력한다. 여기서무한히 오래 전으로 되돌릴 수 있다는게 무슨 뜻 일까? 걸리는 시간 C가 음수이며,음수가 포함된 경로가 순환을 이루면반복을 통해 최단 시간이 무한한 음수로 가는 경우를 뜻하게 된다. 따라서최단 경로 알고리즘인 다익스트라 알고리즘은 사용할 수 없으며,벨만..

https://www.acmicpc.net/problem/1749 문제 3줄 요약1. 동주와 점수 따먹기 게임을 한다.2. N*M 행렬 각 칸에 -10'000 ~ 10'000의 정수를 하나씩 쓴다.3. 행렬의 부분 행렬의 합이 최대가 되게 구하라! 예제를 보고누적합을 생각하니 DP를 사용해야겠는데?라는 생각이 떠올랐고풀었던 유사한 문제가 생각났다. https://59travel.tistory.com/104 [C++] BOJ 15724번 : 주지수https://www.acmicpc.net/problem/15724 문제 3줄 요약1. 네모 왕국의 1X1의 단위 구역을 여러 개 묶으려고 한다.2. 4개의 숫자로 직사각형 범위를 알려준다.3. 해당 직사각형 범위의 내에 살고 있는 사람 수를59travel...

https://www.acmicpc.net/problem/1074 문제 3줄 요약1. 2^N x 2^N 크기의 2차원 배열을 Z모양으로 탐색한다.2. 순서는 왼쪽 위 / 오른쪽 위 / 왼쪽 아래 / 오른쪽 아래 순으로 Z 모양이다.3. r행 c열은 몇 번째로 방문하는지 출력해라! N=3일 경우는 아래와 같이 탐색한다. 그림만 봐도 끔찍하다. 이번 문제는 큰 문제를 작은 문제로 나누어서 해결하는분할 정복 문제이다. 따라서 Z모양으로 탐색하는 부분과재귀를 통한 2 x 2 사각형 탐색하는 부분이 필요하다. 작성된 코드를 보고 분석해보자. if(pow(2,w-1) != 1){ for(int i=x; i 한 변의 길이가 2^w이며, (x, y) 좌표부터 시작하는 사각형은2x2 길이의 사..

https://www.acmicpc.net/problem/6443 문제 3줄 요약1. 씬디는 애너그램 프로그램을 만들어 줄 수 있는 남자가 좋다.2. 애너그램은 입력받은 문자열의 단어들을 재배치한 단어들을 출력하는 것이다.3. 재배치한 문자열의 중복은 제외하고 알파벳 순서로 출력해라. 예시를 보면 바로 이해가 가능하다. (입력) abc → (애너그램) → (출력) abc acb bac bca cab cba abc가 입력으로 주어지면a 1개, b 1개, c 1개로 만들 수 있는 문자열들을 출력하면 된다. 출력할 때알파벳 순서대로 출력해야하니 위와 같이 순서로 출력된다. 문자열의 최대 길이가 21이라고문제에 조건으로 주어졌다. 따라서 완전 탐색은 불가능하기에조합 함수를 사용하거나백트래킹을 통한 탐색이 필요..

https://www.acmicpc.net/problem/20444 문제 3줄 요약1. 직사각형의 색종이를 가위로 자른다.2. 한 변에 평행하게 자르며, 자를 땐 멈추지 않고 자른다.3. n번의 가위질로 k개의 색종이로 자를 수 있는지 확인하는 코드를 작성하자. 예시를 통해 살펴보자! 4번의 가위질로 9개의 색종이를 만든다면? 위의 그림과 같이가로 2번, 세로 2번을 자른다면 9개의 색종이로 자를 수 있다. 따라서가로로 몇 번을 자르는지,세로로 몇 번을 자르는지에 따라서몇 개의 색종이로 나뉘어 지는지 계산이 가능하다. 계산식을 작성해본다면가로로 자른 횟수 : x세로로 자른 횟수 : 전체 가위질 - x색종이 수 = ( x + 1 ) * ( n - x + 1 )로 표현할 수 있다. 그럼 이 식을 어떤 ..

https://www.acmicpc.net/problem/20207 문제 3줄 요약1. 달력에 1년치 일정을 표시하려고 한다.2. 연속된 일자에 일정이 1개 이상 있다면, 이를 연속되었다고 표현한다.3. 연속된 일정을 하나의 직사각형에 포함하여 달력에 코팅지를 붙일 때, 코팅지의 넓이는? 구현 문제라서 그런가문제부터 길고 뭔가 조건이 좀 많아서 복잡해보인다... 예시를 보면서 이해해보자. 위와 같이 2일 ~ 12일까지 일정은아래의 보라색 코팅지를 붙일 수 있다. 2일 ~ 9일까지는 연속된 일정이기에하나의 직사각형으로 묶고 있고 11일 ~ 12일은따로 직사각형 모형으로 코팅지를 붙였기에 총 면적이 28 (= 24+4) 이다. 일단 일정이 주어졌을 때,위와 같이 달력과 같은 형태로 구현해보도록 하겠다. ..

https://www.acmicpc.net/problem/21921 문제 3줄 요약1. 운영하고 있는 블로그의 방문 기록이 있다.2. 블로그의 X일 동안 가장 많이 들어온 방문자 수와 그 기간을 알고싶다.3. 최대 방문자 수가 0이라면 "SAD" 슬픔을 표현하자 이번 문제는이중 포인터를 활용한 문제이다. 방문자 수를X일 동안의 방문자 수를 일자 별로 구해주기 보다는1일차 부터 X일 동안 더해준 값을 기반으로2일차 ~ 2+X일의 값을 구해주려고 했다. 말로는 어려우니 예시와 그림을 통해 살펴보자. 총 5일 간의 방문 기록 중2일 간 방문자의 수가 최대였을 때, 방문자의 수와 기간은 어떻게 될까? 정답은 3일 ~ 4일차 까지의 방문자 수 합인 7과방문자 수가 7인 기간이 하루 뿐이므로 1이 되겠..

https://www.acmicpc.net/problem/11053 문제 1줄 요약1. 수열 A의 가장 긴 증가하는 부분 수열을 구해라. 위와 같이 가장 긴 증가하는 부분 수열을최장 증가 부분 수열, LIS(Longest Increasing Subsequence) 라고 한다. LIS는DP와 이분 탐색 두 가지 알고리즘을 활용하여 풀 수 있다고 한다. 이번 문제에서는DP를 활용하여 풀어보고다음 글에서는 가장 긴 증가하는 부분 수열 2를 이분 탐색으로 풀고자 한다. 가장 긴 증가하는 부분 수열은문자 그대로 부분 수열이면서, 값이 점점 증가하는 형태를 띄고 있는 수열이다. ex) 수열 A = {10, 20, 10, 30, 20, 50}의 LIS는?{10, 20, 30, 50} 이 최장 증가 부분 수열이 될..

https://www.acmicpc.net/problem/9251https://www.acmicpc.net/problem/1958 문제 3줄 요약1. Longest2. Common3. Subsequence 오늘은 LCS(Longest Common Subsequence, 최장 공통 부분 수열) 문제를 풀어봤다. 최장 공통 수열은문제에도 설명되어있듯이 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것이다. ex) ACAYKP, CAPCAK → LCS : ACAK LCS와 다른게 LIS라는 것도 있던데..이건 다음에 풀어보자! 일단 LCS의 알고리즘 분류가DP로 되어있다. DP 테이블에 어떤 값을 저장해야하는지도무지 감이 잡히지 않아서바로 유튜브 서칭! https://www.youtub..