일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쌤쌤쌤
- 호반우 상인
- 백준
- 20117
- graph #최단경로
- 사이클 없는 그래프
- 30870
- 16202
- C++
- 22869
- graph
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- hcpc
- BOJ
- 이분탐색 #dp #11053
- 1174
- LIS #가장긴증가하는부분수열 #
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 3343
- c++ #boj #
- backtracking #codetree #디버깅 #삼성코테
- 투포인터 #백준 #boj #20922 #22862
- 코딩
- 레드아보
- N번째큰수
- boj #백준
- 백준 #다익스트라 #dijkstra #9370 #c++
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 줄어드는수
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- Today
- Total
목록알고리즘 연습/백준 (71)
hyunjin
백준 N번째 큰 수 문제 힌트 N*N은 의미가 없다. 우선순위 큐를 사용해 푼다. 메모리 초과 조심 문제 풀이 큰 흐름 : 순서대로 우선 순위 큐에 넣어서 n번째 수 출력 1. 오름 차순 우선 순위 큐에 수 입력 받아 넣는다. 단, n*n 모두 받아 실행하면 메모리 초과 뜬다. 총 n+1개만 남도록 n 초과되면 pop() 한 이후에 입력받은 수를 넣는다. 2. 입력이 끝나면 우선 순위 큐에는 총 n+1개의 원소만 남는다. 하나 팝한 후 top출력 소스코드 #include using namespace std; int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin >> n; priority_queue pq;//오름차순 for(int i..
백준 좌표 압축 문제 풀이는 간단하다. 복사해서 정렬 후 작은 것 수 출력하면 된다. 이때 필요한 벡터 복사, 중복 제거, lower_bound 사용법 기억해두자 1. 벡터 복사 //방법1 v2.assign(v1.begin(),v1.end()); //방법2 copy(v1.begin(),v1.end(),v2.begin()); 2. 벡터 중복 제거 방법1. vector v({1,1,1,2,2,2,3,3}); sort(v.begin(),v.end()); //v.erase(unique(v.begin() , v.end() )); //이렇게 하면 전체 중복 제거 못함 v.erase(unique(v.begin() , v.end() ) , v.end()); sort 후에 unique와 erase 통해서 중복 제거 방법..
보물섬 L 인 곳에서 BFS 다 돌려본다. 소스코드 #include using namespace std; char land[51][51]; bool visited[51][51]={0,}; int dx[]={0,0,1,-1}, dy[]={1,-1,0,0}; int h,w,ans=0; struct treasure{ int y,x,d; }; void Input(){ cin >> h >>w; for(int i = 0 ; i >land[i][j]; } } } void BFS(int a,int b){ queue q; q.push({a,b,0}); visited[a][b] = true; // for 돌기전에 true로 해야 다시 돌아오지 않음..
토마토 이번엔 3차원 2차원 토마토에서 축 하나 더 생긴거라 비슷하게 가면 된다. 소스코드 #include using namespace std; int box[101][101][101]={0,}; int h,n,m; int ans=0; struct pos{ int x,y,z; }; queue q; int dz[6]={-1,1,0,0,0,0},dy[6]={0,0,0,0,1,-1},dx[6]={0,0,1,-1,0,0}; void Input(){ cin >>m >> n >> h; for(int i = 0 ; i > box[i][j][k]; if(box[i][j][k]==0) numOf..
돌그룹 풀이 소스코드 참고

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