일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- boj #백준
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- N번째큰수
- BOJ
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- c++ #boj #
- 호반우 상인
- 이분탐색 #dp #11053
- 좌표압축
- 코딩
- backtracking #codetree #디버깅 #삼성코테
- 줄어드는수
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 3343
- 레드아보
- 1174
- 쌤쌤쌤
- 논문리뷰 #3DReconstruction
- 서울앵무새
- 백준
- 16202
- 18870
- LIS #가장긴증가하는부분수열 #
- 22869
- graph #최단경로
- 투포인터 #백준 #boj #20922 #22862
- 20117
- C++
- 백준 #다익스트라 #dijkstra #9370 #c++
- Today
- Total
목록알고리즘 연습/백준 (69)
hyunjin
보물섬 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
통나무 건너뛰기 통나무 건너뛰기의 난이도는 인접한 두 통나무 간의 높이의 차의 최댓값으로 결정 주어진 통나무들로 만들 수 있는 최소 난이도를 구하는 문제이다. 문제 풀이 결국 난이도가 최소가 되도록 배치를 하게 될것이다. [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..