본문 바로가기

분류 전체보기

(209)
[ 백준 / C++ ] 14938 : 서강그라운드 [ 문제 ] 14938번: 서강그라운드 [ 접근방법 ] 시작 지역을 기준으로 거리가 m 이하인 지역에 존재하는 아이템 수의 합을 구해야 한다. 모든 지역이 시작 지점이 될 수 있기에 플로이드-워셜 알고리즘을 활용하여 모든 최단 거리를 구하였다. n ≤ 100 이므로 플로이드-워셜 알고리즘을 사용하더라도 시간은 충분하다. O(N^3) [ 소스코드 ] #include #include using namespace std;int n, m, r, t[105], d[105][105], INF = 10000;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m >> r; for(int i = 1; i > t[i]; for(i..
[ 백준 / C++ ] 2240 : 자두나무 [ 문제 ] 2240번: 자두나무 [ 접근방법 ] DP를 활용하여 O(TW) 만에 문제를 해결할 수 있다. dp[ i ][ j ][ k ] = i초 동안 j번 이동하여 k번 나무에 위치할 때 자두의 최대 개수. t초 동안 최대 w번 이동하였을 때 자두의 최대 개수는 dp[ t ][ 0 ~ w ][ 1 ~ 2 ]를 비교해보면 알 수 있다. [ 소스코드 ] #include #include using namespace std;int t, w, dp[1001][31][3];int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> t >> w; for(int i = 1; i > cnt; dp[i][0][1] = dp[i - 1][0][1..
[ 백준 / C++ ] 17144 : 미세먼지 안녕! [ 문제 ] 17144번: 미세먼지 안녕! [ 접근방법 ] 크게 2파트(미세먼지 확산, 공기청정기 작동)로 나누어서 구현을 하였다.b 배열에 작업을 진행한 뒤 결과를 a 배열에 적용하였다. [ 소스코드 ] #include using namespace std;int r, c, t, a[55][55], b[55][55], airCleaner;int dx[4] = {0, 0, -1, 1};int dy[4] = {-1, 1, 0, 0};int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> r >> c >> t; for(int i = 0; i > a[i][j]; if(a[i][j] == -1){ ai..
[ 백준 / C++ ] 2251 : 물통 [ 문제 ] 2251번: 물통 [ 접근방법 ] 가능한 경우의 수가 최대 200^3 이므로 브루트포스로 모든 경우를 확인하였다. A→B, A→C, B→A, B→C, C→A, C→B 순으로 재귀를 통해 확인하였고, 각각 물을 전부 옮길 수 있거나 아닌 경우로 나누어 진행하였다. 최대 12개의 가지가 뻗어나가지만 chk 배열을 통해 중복을 체크하고 있기 때문에 상관없다. [ 소스코드 ] #include using namespace std;int a, b, c;bool ans[205], chk[205][205][205];void f(int x, int y, int z){ if(chk[x][y][z]) return; chk[x][y][z] = true; if(!x) ans[z] = true; ..
[ 백준 / C++ ] 1251 : 단어 나누기 [ 문제 ] 1251번: 단어 나누기 [ 접근방법 ] 단어의 길이가 50 이하이므로 브루트포스로 문제를 해결하여도 충분하다. [ 소스코드 ] #include using namespace std;string str, ans;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> str; for(int i = 1; i = 0; k--) tmp += str[k]; for(int k = j - 1; k >= i; k--) tmp += str[k]; for(int k = str.size() - 1; k >= j; k--) tmp += str[k]; if(ans == "" || tmp
[ 백준 / C++ ] 4358 : 생태학 [ 문제 ] 4358번: 생태학 [ 접근방법 ] map을 활용하면 나무를 사전순으로 정렬하면서 수를 쉽게 셀 수 있다. round함수는 소수점 1자리에서 반올림을 한다. 소수점 n자리에서 반올림을 하고 싶으면 10^(n - 1)을 활용하면 된다.소수점 5자리에서 반올림 : round( x * 10^(n - 1) ) / 10^(n - 1). [ 소스코드 ] #include #include #include using namespace std;string str;map mp;int n = 0;int main(){ ios::sync_with_stdio(0); cin.tie(0); while (getline(cin, str)) { mp[str]++; n++; }..
[ 컴퓨터 구조 ] 메모리 종류 [ 출처 ]혼자 공부하는 컴퓨터 구조 + 운영체제 06강https://www.youtube.com/watch?v=kFWP6sFKyp0[ RAM 특성과 종류 ]주 기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고,메모리는 그 중 RAM을 지칭하는 경우가 많다. RAM 특성= 휘발성 저장 장치= RAM이 크면 많은 프로그램들을 동시에 실행하는데 유리 RAM 종류DRAM= Dynamic RAM= 저장된 데이터가 동적으로 사라지는 RAM= 일반적으로 메모리로 사용= 상대적으로 소비전력이 낮고 저렴하며 집적도가 높아 대용량으로 설계하기 용이 SRAM= Static RAM= 저장된 데이터가 사라지지 않는 RAM= DRAM 보다 일반적으로 더 빠름= 일반적으로 캐시 메모리로 사용 SDRAM= Synchrono..
[ 백준 / C++ ] 5639 : 이진 검색 트리 [ 문제 ] 5639번: 이진 검색 트리 [ 접근방법 ] 전위순회 -> 후위순회 하기 위해서는 루트의 왼쪽, 오른쪽을 파악하는 것이 중요하다. 입력으로 이진 검색 트리가 들어오기 때문에,루트의 왼쪽은 무조건 루트 노드보다 작고,루트의 오른쪽은 무조건 루트노드보다 크다. 루트 기준으로 영역을 구분하면서 재귀를 돌면 된다. [ 소스코드 ] #include #include using namespace std;int x;vector preOrder, postOrder;void preToPost(int l, int r){ if (l > r) return; if (l == r) { postOrder.push_back(preOrder[l]); return; } int i..