일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 22869
- 투포인터 #백준 #boj #20922 #22862
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- N번째큰수
- 30870
- 3343
- boj #백준
- 줄어드는수
- 코딩
- 1174
- backtracking #codetree #디버깅 #삼성코테
- LIS #가장긴증가하는부분수열 #
- 레드아보
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 호반우 상인
- graph
- C++
- c++ #boj #
- 백준
- 백준 #다익스트라 #dijkstra #9370 #c++
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 이분탐색 #dp #11053
- 사이클 없는 그래프
- hcpc
- 20117
- BOJ
- 쌤쌤쌤
- 16202
- graph #최단경로
- Today
- Total
목록알고리즘 연습 (105)
hyunjin

11000 강의실 배정 우선순위 큐를 배웠다. 단순하게 가자 우선순위 큐를 사용하기 전엔 직접 내부 for 돌며 검사했는데 우선순위 큐를 사용하니 알아서 top만 검사하면 되니까 쉽게 끝났다. 문제풀이 1. 시작,끝 시간 입력 받아 시작 시간 순으로 정렬, 시작 시간이 같다면 먼저 끝나는 순으로 정렬 2. 우선순위큐 오름차순 정렬 되도록 만들어 놓고 3. 맨 처음 클래스 끝나는 시간 하나 넣어준다. 4. for 돌며 q의 top( 가장 먼저 끝나는 수업) 과 비교해서 안겹치면 그 수업의 끝나는 시간 갱신, 겹친다면 push 소스코드 #include #include #include using namespace std; struct node{int s,e;}; int n; node times[200000];..
boj 행렬 문제 풀이 문제를 처음에 딱 읽고 이해 바로 못했다. 애해한 부분을 다른 분들 설명 보며 조건에 대해 확실히 이해했다. - 3X3의 변환 행렬은 크기가 고정되어 있고, - 주어진 행렬 안에만 적용된다. (3X3 필터가 주어진 행렬 내부로만 슬라이딩 가능하단 의미) 따라서 먼저 주어진 행렬의 크기가 3,3 이상인지 확인하고 두 갈래로 진행한다. 1. 3X3 미만이라면 두 행렬 바로 비교 2. 3X3 이상이라면 0~n-3, 0~k-3 까지 돌며 필터 적용하며 같은지 확인(주의할 점은 전체 다 돌린다음 같은지 확인이 아니라 필터 적용할 때마다 확인) 소스 코드 #include #define MAX 50 using namespace std; int n,k,ans=0; int A[MAX][MAX],B..
A → B 문제 처음에 DFS로 하려고 했으나 출력하는 level의 문제가 있었기 때문에 BFS로 바꿨다. que에 pair로 숫자와 level을 함께 넣어 풀었다. 풀때 타입 주의 소스 코드 //#include //#include //#include #include using namespace std; typedef long long ll; typedef pair pli; ll input_num,target_num,result=0; // //void DFS(int current_num, int depth){ //if(current_num == target_num){ //cout
통나무 건너뛰기 통나무 건너뛰기의 난이도는 인접한 두 통나무 간의 높이의 차의 최댓값으로 결정 주어진 통나무들로 만들 수 있는 최소 난이도를 구하는 문제이다. 문제 풀이 결국 난이도가 최소가 되도록 배치를 하게 될것이다. [13 10 12 11 10 11 12] 이 예제로 생각해보자. 정렬한 결과 13 10 12 11 10 11 12 10 10 11 11 12 12 13 10 10 11 11 12 12 13 이 상태에서 난이도가 최소가 되도록 배치한다면 결국 정렬 후에 차이가 가장 적게 나는 것을 양옆에 배치할것이다. 10 기준으로 양 옆에는 10,11이 오게 배치될 것이다. 12 기준으로는 양 옆에 12 13가 오게 배치될 것이다. 이렇에 모든 수에 양옆에 이런식으로 배치될 것이다. 정렬 후 현재 위치..
백준 1541 잃어버린 괄호 난이도 silver2 풀이 1. - 이후엔 모두 괄호로 묶는다. 2. 다음 - 나오기 전까지 괄호로 묶는다. 괄호에 포커스를 두니 위의 2가지 방법에 묶여 구현을 어렵게 생각했다. queue,stack 등장... => 다시 생각해보면 결국 - 이후 연산자는 다 - 로 처리하면 된다. 이것을 구현할때 주의점 역시 숫자에서 한번에 다 뽑아내려하지 말고 string num 하나 두어서 계속 쌓다가 연산자 파트에서 계산해주면 더 쉽게 풀린다. 소스 코드 #include #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); string input; cin >> inpu..
백준 그리디 11501 딱 보고 바로 떠오르진 않았다. silver3으로 난이도는 낮은 문제 문제 풀이 중요한 포인트는 i 번째 기준 i+1~마지막 중 max 값에서 팔면 최대라는 것이다. 이점을 이용해 풀어야하고 앞에서 부터 시작하면 i 마다 max가 달라지고 그 위치도 찾아줘야하기 때문에 복잡하다. 뒤에서 부터 시작해 max를 찾아 계산해주면 금방 풀린다. 시간 초과 #include using namespace std; int main(){ int T,N; scanf("%d",&T); while(T--){ scanf("%d",&N); int answer = 0 ; int profit[N]={0,}; // 주식 판 이익 int stockPrice[N]={0,};//주식 가격 for(int i = 0 ;..

https://www.acmicpc.net/problem/17248 17248번: 물리 공부 A 자동차는 20m/s로, B 자동차는 60m/s로 달리고 있을 때 A의 속도가 크기 2의 가속도에 의해 1초에 22m/s, 2초에 26m/s, 3초에 32m/s ... 로 증가 하게 되어서 A의 속도가 6초에 62m/s가 된다. www.acmicpc.net 경북대 2019 프로그래밍 경시대회 문제 문제 풀이 단순 수학 계산 문제다. 소스 코드 #include using namespace std; int X,Y,Z; float answer; void Input(){ cin>>X>>Y>>Z; } void Solution(){ answer = (-1*Z + sqrt( Z*Z - 4 *Z*(2*X - 2 * Y ) )..