알고리즘/알고리즘 관련 메모장 8

c++ stl SORT 사용법

문제풀다가 빡쳐서 씀 Sort [first,last)범위 내에 있는 원소들을 오름차순으로 정렬해주는 알고리즘이다 값이 동일한 요소에 대해서는 원래 상대적인 순서 (인덱스번호)를 장담하지 못한다 -> stable sort 로 해결 가능 배열 : sort(arr , arr+N) 벡터 : sort(v.begin() , v. end()) 사용자 정의 함수를 따로 사용할 수 있다. 뒤에 사용자 정의함수를 적으면 된다. 무엇을 기준으로 대소관계를 가릴 것인지 적어주는 것이다. 예를 들어, 백준 1181번 단어정렬 (www.acmicpc.net/problem/1181)같은 경우 #include #include #include #include using namespace std; vector arr; int n; bo..

DFS로 순열 및 조합 구현

문제를 풀다보니 순열,조합을 구현해야하는 상황이 생겼다. 저번에는 이차원 배열 인덱스를 쫙펴서 X좌표는 몫 , Y좌표는 나머지로 3중 for문을 돌려 해결했지만, 그렇게 하면 시간복잡도가 터져버릴 거같다;; 그래서 찾아보니 c++에는 순열 라이브러리가 존재한다. 1. STL 사용 next_permutation(v.begin() , v.end()) 라이브러리를 쓸 수 없는 상황이 생긴다고 해서 dfs로 순열 및 조합 구현하는 방법을 좀 익혀두려고 한다. 구글링을 해봤더니 보통 다 바로바로 print하는 코드들만 있는데, 사실 문제를 풀면서 순열을 출력할 상황은 많지 않다;; 그래서 배열에 저장하는 방식으로 코드를 짰다. 물론 구글링과 함께 ㅎ 조합과 순열의 차이는 순서가 있다는 거다. 보통 조합을 나열할 ..

C++ 배열/벡터 copy 와 memset

Copy bfs를 사용하여 visited를 확인해주다보니 배열을 고대로 복사해야할 때가 많았는데 for문을 두세번씩 쓰기가 너무 귀찮았다. 다른 스터디원이 파이썬에서 copy쓰는 거 보고 c++ 도 먼가 있을 거 같아서 찾아보았다. 아래 블로그 글에 기가막히게 정리가 잘되어있다. 보고 참고했다. kamang-it.tistory.com/entry/cSTLarrayvectorc%EC%97%90%EC%84%9C-%EB%B0%B0%EC%97%B4-%EB%B3%B5%EC%A0%9C%ED%95%98%EA%B8%B0 [c++][STL][array][vector]c++에서 copy함수로 배열, 벡터 복제하기(다차원 가능), for과 copy 비교 배열 복제의 경우 가장 간단한 방법은 for문을 사용한 방법이다. 사실 ..

BFS , DFS 알고리즘 - 예제풀이

BFS, DFS에 대해서는 이전 알고리즘 스터디에서 다뤘던 주제라서 안다. BFS는 너비우선탐색이고 , 큐를 사용하는 방식이고 DFS는 깊이우선탐색에 스택을 사용한다 이정도?? 근데 이거만 안다고 해서 문제가 풀리지는 않더라,,,,ㅜㅜ 개념 공부하고 관련 예제 풀어보고 알고리즘 공부할때마다 느끼는 건데 수능수학 공부하는 거 같다. 아래 블로그에서 기본 DFS,BFS에 해당하는 1-4 번 네가지 문제를 풀어보자. huiyu.tistory.com/entry/DFSBFS-%EC%88%99%EB%8B%AC%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%EA%B8%B0%EB%B3%B8%EC%9D%91%EC%9A..

c++ 3일차

8단계 수학1. 수학문제를 풀면서 사고력을 길러보자,,,, 이런 뜻인줄 몰랐죠,,,, 최대한 수학을 이용해서 빠르고 효율적으로 풀어야만 한다. ಥ_ಥ 백준1712번 (www.acmicpc.net/problem/1712) #include using namespace std; int main() { long a, b, c; cin >> a >> b >> c; if (b >= c) cout > weight; //5x+3y = weight if (weight % 5 == 0) cout = 0; i--) { if ((weight - 5 * i) % 3 == 0) { x = i; y = (weight - 5 * x) / 3; res = x + y; cout

C++ string 사용법

jhnyang.tistory.com/115?category=850633 1,2탄과 blockdmask.tistory.com/338 , en.cppreference.com/w/cpp/string/basic_string 를 참고했습니다. C언어에서는 문자열을 입력받을 때, 문자열의 크기를 모르는 경우가 많았다. (내가 바보여서 그럴 수도 있음 ㅎㅎ ) 그래서 보통 char sentence[100] 이런 식으로 두고 풀었었는데 c++에서는 string이라는 class를 사용하면 편리하게 문자열을 다룰 수 있다. 0. 기본 input ) #include #include //string이라는 헤더파일을 불러온다. using namespace std; int main() { string sentence; // 1 ..