[목차]310 <lower_bound, upper_bound> 정렬된 공간에서 이진 탐색 C++ 에서 이진탐색으로 원소를 탐색하는 함수가 제공된다는 것을 이번에 처음 알았다. , 가 있다. 해당 함수를 사용할 때는 배열 혹은 벡터는 오름차순으로 정렬 되어야한다. 이진탐색은 그런 조건일 때 사용되는 알고리즘이기 때문이다. - 이 함수를 쓰기 위한 용도로는 찾고자하는 값이 인덱스 몇번에 위치하는지 알고 싶을 때 사용하면 된다. 이 함수의 반환형은 Iterator 이므로 첫 번째 주소를 가리키는 v.begin()을 빼줘야 한다. 이렇게 구현을 해준다면 인덱스 번호가 반환이 된다. - 찾으려는 값을 초과하는 숫자는 몇번째 인덱스에서 처음 등장하는지 알고 싶을 때 사용하면 된다. 두개의 함수 모두 벡터나 배열의 시작 지점과 끝지점 그리고 찾고자하는 원소값을 인자로 둔다. 아래의 코드를 보고 어떻게 사.. 기타/C++ 문법 2022. 1. 21. <unordered_map> 자료구조 을 선언해야한다. 주의해야 할 점은, key가 유사한 데이터가 많을 시 해시 충돌로 인해 성능이 떨어질 수도 있다. 그렇기 때문에 key 값이 다르면서 해당 key값을 갖는 원소의 갯수를 탐색 할 때 사용하면 빠른 시간내에 찾을 수 있다. find(key) : 맵에서 해당하는 key값을 갖는 원소가 있는지 확인한다. operator [] : key를 통해 value 를 지정한다. 코드를 확인해보면 어떻게 쓰이는지 안다. size() : 맵의 크기를 확인한다. empty() : 맵이 비어있는지 확인한다. insert({key,value}) : key값과 value값을 한번에 삽입한다. erase(key) : key 해당하는 원소를 제거한다. celar() : 맵 초기화 참고로 인덱스로 접근할 수 없고 it.. 기타/C++ 문법 2022. 1. 21. [Level_2 / C++ / 카카오] 프렌즈4블록 문자열 벡터가 만약 "TTTANT" "RRFACC" "RRRFCC" "TRRRAA" "TTMMMF" "TMMTTJ" 이런식으로 주어졌다고 가정하자. 난 이것을 오른쪽으로 90도 회전했다. 이런식으로 돌려서 위에서부터 차례대로 v[0]의 문자열 ~ v[5]의 문자열로 생각하는 것이다. (쉽게 생각할 수 있도록!) 벡터 v를 하나하나씩 살펴보는데 정사각형 2X2 라는 점을 고려해서, 현재 원소에서 오른쪽, 아래쪽, 오른쪽+아래쪽을 확인해야하기 때문에 반복문에서는 열과 행을 하나씩 빼준값 까지 돌아야한다. 각 벡터의 문자열들의 사이즈가 1보다 같거나 작으면 애초에 비교대상이 되지 않으니까 continue 해준다. 그리고 map이라는 이차원 맵을 생성하여 서로 같은 원소가 총 4개가 나오면 map의 해당 인덱스.. 프로그래머스/Level_2 2022. 1. 20. [백준 1260번 / C++] DFS와 BFS dfs와 bfs의 원리를 터득하기 위해 올린다. 그렇게 어렵지 않은 문제이니 평소에 dfs나 bfs가 애매한 감이 있다면 풀어보길 권한다. #include #include using namespace std; int map[1001][1001]; int visited1[1001]; int visited2[1001]; int n, m, v; queue q; void bfs() { while (!q.empty()) { int v = q.front(); cout v; for (int i = 0; i > a >> b; map[a][b]=1; map[b][a]=1; } visited2[v] = 1; dfs(v); cout 백준/DFS BFS 2022. 1. 20. [백준 7576 / C++] 토마토 bfs를 활용해서 풀면 되는 문제이다. 지금까지 풀어왔던 bfs와는 조금 다른 점이 있었다. 익은 토마토가 하나일 수도 있고 두개일 수도 있고 즉, 여러개일 수도 있다. 다시말해, 여러 영역에서 익은 토마토들이 존재하면 동시에 움직이면서 visited를 세팅 해야한다는 것이다. 주인공이 하나가 아니라는 뜻이다. 익은 토마토들을 먼저 다 queue에 넣어줘서 bfs를 시작하게 된다. 먼저 queue에 넣은 익은 토마토들의 x,y 좌표값을 vector에 넣어주고 vector에 들어있는 각 좌표값의 상, 하, 좌, 우 를 모두 살펴보고 갈 수 있는 길이 있다면 그 값들을 모두 다시 큐에 넣어준다. 그러한 작업이 모두 이루어지고 나면 그때, cnt값을 하나 올려주는 것이다. #include #include #i.. 백준/DFS BFS 2022. 1. 20. [백준 1062번 / C++] 가르침 이번 문제는 비트마스킹을 활용해서 완전 탐색을 하여 풀었다. 문제에서 n개의 문자열이 주어지는데 공통된 언어로는 "anta"로 시작되고, "tica"로 끝난다는 것이다. 즉, 'a', 'n', 't', 'c', 'i' 이 단어를 배우지 못하면 어떤 단어도 읽지를 못한다. 그렇기 때문에 배우는 알파벳의 개수가 저 알파벳을 포함해서 최소 5개는 돼야 한다는 것이다. 그렇기 때문에 alpa 라는 값에 최초 초기화해야할 숫자는 'a', 'n', 't', 'c', 'i' 이 단어를 가리키는 이진수의 값으로 나타내야한다. 그리고 dfs 를 돌게 되는데 여기서 중요한 점은 첫번째 인덱스를 돌다가 dfs를 돌 때는 그 인덱스 값을 파라미터 값으로 전달 해줘야한다. 즉, dfs 함수 안에서 또 for문이 동작하게 되는데.. 백준/비트마스킹 2022. 1. 20. <erase> 문자열 지우기 문자열에서 어떠한 특정 인덱스에 위치한 하나의 값만 지우고 싶을 때나 여러개의 문자를 지울 때 쓰인다. s.begin() + 3 : 문자열 s의 인덱스 3번 s.erase(s.begin() + 3, s.begin()+4) : 문자열 s의 인덱스 3번부터 인덱스 4번 전까지 지우기 #include #include using namespace std; int main() { string s = "123456"; s.erase(s.begin() + 3, s.begin()+4); cout 기타/C++ 문법 2022. 1. 20. [Level_2 / C++ / 카카오] 수식 최대화 삭제 및 삽입 벡터의 원소를 삭제를 하면 이후 인덱스에 해당하는 값이 지운 인덱스 칸을 채울 수 있다. 또한 어떤 특정 인덱스에 특정값을 삽입 하면 기존에 있던 값들은 뒤에 위치하게 된다. 다음 문법을 확 baebalja.tistory.com 모든 경우의 수 정렬 벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정 baebalja.tistory.com 우선 연산자의 우선순위가 주어지는데 총 세가지 연산자가 있다. "*", "-", "+" 이 연산자를 p_cal 이라는 벡터에 넣고 정렬해준다. next_permutaion 함수를 적용하.. 프로그래머스/Level_2 2022. 1. 20. <erase/insert> 삭제 및 삽입 벡터의 원소를 삭제를 하면 이후 인덱스에 해당하는 값이 지운 인덱스 칸을 채울 수 있다. 또한 어떤 특정 인덱스에 특정값을 삽입 하면 기존에 있던 값들은 뒤에 위치하게 된다. 다음 문법을 확인하고 숙지하자. 추가적으로, erase(int start, int end) 하나가 아닌 여러개를 지울 때는 해당하는 범위의 원소를 지운다. start는 포함하고, end는 포함하지 않는다는 것에 주의하자 v.erase(v.begin()+2, v.begin()+4)는 세 번째부터 네 번째 까지의 원소를 지운다. #include #include using namespace std; int main() { vector v(3); for (int i = 0; i < 3; i++) { v[i] = i; } for (int i.. 기타/C++ 문법 2022. 1. 20. <vector> 반환값 size() - 벡터의 요소의 개수를 반환. swap(vector객체) - 두 벡터의 내용을 교환(교체). empty() - 벡터가 비었는지 여부를 반환. at(index) - index번째 요소에 접근. begin() - 벡터의 첫 번째 요소를 가리킴. (포인터개념) end() - 벡터의 마지막 요소를 가리킴. (포인터개념) front() - 벡터의 첫 번째 요소를 반환. back() - 벡터의 마지막 요소를 반환. 기타/C++ 문법 2022. 1. 20. 이전 1 ··· 22 23 24 25 26 27 28 ··· 31 다음 반응형