[목차]310 [Level_3] 네트워크 (C++) 위의 그림은 [[1,1,0],[1,1,0],[0,0,1]] 를 도형화 시켜놓은것이다. 즉, 이차원 벡터값을 받아와서 현재 노드를 가리키는 인덱스에서 다른 노드를 가리키는 인덱스의 배열값이 1인곳을 방문 처리를 해주면서 dfs 를 돌리면 된다. #include #include using namespace std; bool check[200]; int n1; void dfs (vector &v, int node_idx){ for(int i=0; i 프로그래머스/Level_3 2022. 1. 18. [Level 2] 가장 큰 수 (C++) 오름차순, 내림차순으로 정렬하자 sort() 함수는 algorithm 헤더에 포함되어 있다. 대부분 코딩테스트에서 웬만해선 처음부터 끝까지 정렬을 한 후 문제를 풀게끔 되어 있는 경우가 많다. 이럴때 sort() 함수가 매우 유용하다. 벡터, 문 baebalja.tistory.com 사용자 정의에 의한 정렬을 하여 이 문제를 풀면된다. 즉, cmp() 함수를 생성하여 sort()의 세번째 인자 값으로 넣으면, bool 함수의 반환 값에 의해서 정렬이 동작한다. number값을 to_string 함수를 통해서 문자열로 처리한 후 compare()함수에서 문자열 a와 b를 합치는데 이때 a+b를 연결한것과 b+a를 연결한 것중에 더 큰 값을 앞에다가 정렬 하겠다는 의미이다. 6과 10을 한번 보자 해당 값을.. 프로그래머스/Level_2 2022. 1. 17. [Level_2] 더 맵게 (C++) 자료구조 Priority_Queue는 Queue 의 한 종류인데 말 그대로 우선순위에 따라 정렬된 Queue라고 보면 도니다. 와 동일한 라이브러리에서 지원 해주며 특정 원소를 push 를 할 때 O(logN)만에 이루어진다. 해당 시간 baebalja.tistory.com 해당 문제는 priority_queue 를 알면 쉽게 풀 수 있다. 값을 삽입 할 때 오름차순으로 정렬 되어있는 min heap으로 생성해준다. 그렇게 한다면 최소값이 루트노드에 위치하게 되며 제일 작은 값을 우선적으로 pop을 해주기 때문에 해당 문제를 쉽게 풀 수 있다. #include #include #include using namespace std; int solution(vector scoville, int K) { int.. 프로그래머스/Level_2 2022. 1. 17. [백준 6236번 / C++] 용돈 관리 이분 탐색 문제이다. 어떤식으로 이분 탐색을 활용하는지 한번 살펴보자. 먼저 비교할 값을 이분탐색을 통해서 추출해낸다. 예를 들어 low 값과 high 값을 1과 100000값으로 정했으면 low와 high를 이용해 중간값을 구할 수 있다. 다음 그림을 한번 살펴보자. 즉, 첫 중간값은 50,000이 되고 두번째 중간값은 25,000 ... 이런식으로 계속 분할하다 보면 mid가 50일 때가 나올것이다. 이때를 한번 살펴보자 밑에 그림에서 현우가 날마다 사용하려고 하는 돈이 "10 40 30 10 50 10 40" 이라고 가정을 하자. 현재 mid 값인 50으로 현우가 날마다 사용하려고 정한 돈을 계속해서 빼주고 충당이 안된다면 다시 mid값을 초기화 시켜서 반복한다. mid값을 다시 초기화 시키는 작업.. 백준/이분탐색 2022. 1. 17. [백준 2343번 / C++] 기타 레슨 [백준 6236번 / C++] 용돈 관리 이분 탐색 문제이다. 어떤식으로 이분 탐색을 활용하는지 한번 살펴보자. 먼저 비교할 값을 이분탐색을 통해서 추출해낸다. 예를 들어 low 값과 high 값을 1과 100000값으로 정했으면 low와 high를 이 baebalja.tistory.com 위의 문제와 거의 똑같은 문제다. 해당 링크 설명을 보고 한번 풀어보자. #include #include #include using namespace std; int l = 1; int h = INT_MAX; int n, m; vector v; bool check(int mid) { for (int i = 0; i mid)return 0; } int sum = 0; int cn.. 백준/이분탐색 2022. 1. 17. <reverse> 문자열 역정렬 말 그대로 문자열을 거꾸로 뒤집어 정렬 하는 것이다. reverse(s.begin(), s.end()) ; 알아두자 #include #include using namespace std; int main() { string s = "abcde"; reverse(s.begin(), s.end()); cout 기타/C++ 문법 2022. 1. 17. [백준 1103번 / C++] 게임 쉽게 생각하고 dfs를 적용해서 해보니 메모리 초과가 떴다. 즉, 50X50 배열에서 값에 따른 재귀를 계속 호출하면서 스택에 함수가 계속 쌓이게 된다. 이로인해서 메모리 초과가 발생하게 되는것이다. 그렇기 때문에 방문 했던 곳에 대한 카운트 값을 기록 즉, 메모이제이션 DP를 활용해야했던 문제였다. 먼저, 다음 그림의 예제값으로 그림을 그려보자. (0,0) 좌표에 해당하는 값은 "2" 이다. 그렇다면 상하좌우를 살펴보면서 갈 수 있는 길을 찾게 된다. 나아가야 할 방향의 순서를 "우좌상하" 라고 가정하고 한번 풀어보겠다. 그렇다면 먼저 오른쪽 방향으로 먼저 가보겠다. 이때 vsited(좌표값) 에 방문했다고 체크를 해두자. 오른쪽 방향에서 만나는 숫자는 3이다. 여기서도 똑같이 vsited(좌표값) 에.. 백준/DP 2022. 1. 17. [백준 1764번 / C++ / Silver IV] 듣보잡 #include #include #include #include using namespace std; int main() { int a, b; cin >> a >> b; int cnt = 0; int i, j, k; vectorA; vectorB; for (i = 0; i > s; A.push_back(s); } sort(A.begin(), A.end()); for (i = 0; i > s; if (binary_search(A.begin(), A.end(), s)) { B.push_back(s); cnt++; } } sort(B.begin(), B.end()); cout 카테고리 없음 2022. 1. 17. [백준 14469번 / C++] 소가 길을 건너간 이유 3 쉬운 문제이니 그림을 참고해서 한번 생각해보자 위와 같이 예제가 주어졌다고 가정하자. 2초에 들어와서 1초동안 8초에 들어와서 3초동안 5초에 들어와서 7초동안 "정렬 시켜준다." 2초에 들어와서 1초동안 5초에 들어와서 7초동안 8초에 들어와서 3초동안 여기서 time이라는 변수를 만들어줘서 time 은 "시작시간 + 검문시간" 을 저장해주는데 이때 중요한점은 "시작시간 + 검문시간" 이 다음 소가 들어오는 시간과 겹칠 수 가 있다. 그렇기 때문에 time이 겹칠 경우 계속해서 누적해주면서 time값을 갱신해준다. #include #include #include using namespace std; int main() { int n; cin >> n; vector v; for (int i = 0; i .. 백준/구현 2022. 1. 17. [백준 1781 / C++] 컵라면 [백준 2109번 / C++] 순회강연 처음에 이 문제를 접근할 때 이런식으로 접근 하였다. #include #include #include using namespace std; int check[10001]; int sum; bool cmp(pair p1, pair p2) { return p1.first > p2.first; } int main() {.. baebalja.tistory.com 이 문제는 위의 문제와 완전 동일하다고 볼 수 있다. 이 문제를 풀기 위해서 위의 문제를 먼저 풀어보고 해설을 읽고나서 풀어보길 추천한다. #include #include #include #include using namespace std; int main() { int n; cin >> n; vector v; p.. 백준/그리디 2022. 1. 17. 이전 1 ··· 24 25 26 27 28 29 30 31 다음 반응형