C++ <ctime>
Language/C, C++ 2022. 5. 22. 18:04

은 시간을 다루는 함수들이 모여있는 헤더 파일입니다. time_t time() 함수의 반환 값으로 사용되는 데이터 타입입니다. time_t name; 의 형태로 선언한 다음 name = time(NULL); 혹은 time(&name);과 같이 받아옵니다. 변환하는 현재 시간은 유닉스 시간을 따릅니다. 초단위의 정수 값입니다. 유닉스 시간 : 1970년 1월 1일 00:00 UTC 이후 경과된 초 localtime() struct tm *localtime( const time_t *timer ); tm 구조체에 대한 포인터를 반환합니다. tm 구조체는 밑에서 설명하겠습니다. tm 구조체 time_t의 반환값을 알아보기 쉽게 변수로 구분돼있는 구조체입니다. time_t로 받아온 데이터를 localtime()..

[백준 2792] 보석 상자
Algorithm/풀이 및 해설 2022. 5. 22. 17:34

문제 보기 해설 이분 탐색으로 해결할 수 있는 문제입니다. 질투심 이하의 개수로 N명에게 나눠주는 것에 대한 탐색을 합니다. mid 값은 질투심(최대로 가져가는 보석)입니다. 예제 입력 1를 예시로 설명해본 것입니다. 먼저 가장 큰 사탕 수인 7을 right로 두어 mid값이 4가 나옵니다. 4로 묶었을 때 나머지 묶음을 포함하여 3묶음이 나옵니다. 이것은 유효한 질투심입니다. 나눠줘야 될 사람이 5명인데 3묶음으로 충분한 이유는 우리는 묶음을 쪼개서 줄 수 있기 때문이죠. 질투심 만으로만 묶었을 경우가 사람 수보다 적거나 같다면(n >= cnt) true입니다. 이 경우에는 더 적으면서 질투심이 성립하는 것을 찾기 위해서 right를 줄여서 mid 값을 줄입니다.(right = mid - 1;) 또한 ..

[백준 10026] 적록색약
Algorithm/풀이 및 해설 2022. 5. 15. 19:14

문제 보기 해설 주변 배열의 글자가 동일한 것을 찾아 나가는 문제로 BFS(너비 우선 탐색)을 이용해서 풀었다. (해당 문제는 DFS로 풀어도 무방하다.) 주변을 탐색하며 묶음의 개수를 찾아내는 문제는 기본적인 형태의 그래프 탐색 문제이고 4963번 문제와 같이 유사한 문제가 많다. BFS를 진행해준 뒤 색약일 때의 경우도 구해야 하므로 저장된 R을 G로 바꿔준 뒤 다시 BFS를 해서 답을 구한다. 코드 #include #include using namespace std; const int da[4] = {-1,1,0,0}; const int db[4] = {0,0,-1,1}; typedef struct position{ int a,b; }Pos; bool Condition(bool vis[][101],..

C++ <unordered_map>
Language/C, C++ 2022. 5. 15. 18:57

은 C++ STL인 Hash Table입니다. map과 비교 중복된 데이터를 허용하지 않음 데이터가 많을 시 월등히 좋은 성능 key가 유사한 데이터가 많을 시 해시 충돌로 인한 성능 저하 탐색 시간 복잡도는 map은 O(logn)이고 unordered_map은 O(1)이다. 함수 empty() : 맵이 비어있다면 true, 아니라면 false 반환한다. size() : 맵의 크기를 반환한다. operator [] : key를 통해 value를 지정하는 operator (map_name[key] = value) find(key) : 맵에서 key에 해당하는 원소를 찾아 반환한다. count(key) : 맵에서 key에 해당하는 원소의 개수를 반환한다. insert({key,value}) : 맵에서 key..

[백준 11057] 오르막 수
Algorithm/풀이 및 해설 2022. 5. 9. 21:56

문제 보기 풀이 N을 1부터 점점 올려가면서 규칙성을 파악해 보겠습니다. N=1일 경우, 한 자리 수라면 0~9의 숫자가 오기 때문에 10가지입니다. N=2일 경우, 두 자리 수라면 초록색 자리에 올 숫자가 정해지면 ? 자리에 올 수가 몇개인지도 정해집니다. 가령, x=0이라면 10가지이고, x=1이라면 뒤에 0이 올 수 없기 때문에 9가지입니다. (같은 수까지 허용되기 때문에 1은 올 수 있습니다.) 그렇게 해서 모든 가짓수를 더해보면 55가지입니다. N=3인 경우를 보겠습니다. x가 0이라면 뒤에 오는 수들도 제약이 없으므로 N=2인 경우와 동일합니다. 55가지입니다. x가 1이라면 뒤 y에는 0이 올 수 없습니다. 0이 앞에 있을 경우 뒤에 올 수 있는 자리가 10가지 라는 것을 이미 알고 있습니다..

인터넷은 어떻게 동작하는가?
Computer Science/Network 2022. 5. 8. 19:28

https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work 의 내용을 참고하여 쓴 글입니다. 인터넷은 기본적으로 컴퓨터들이 통신 가능한 거대한 네트워크를 뜻합니다. 어떻게 오늘날의 인터넷이 만들어 졌는지 예시를 들어 설명하겠습니다. 일단 두 대를 연결해보기 유선 혹은 무선으로 컴퓨터 두 개가 연결된 간단한 네트워크가 생겼습니다. 연결할 컴퓨터가 많아졌다 연결해야할 컴퓨터의 수가 10개, 100개, 1000개가 된다면 어떨까요? 플러그와 케이블이 기하급수적으로 많이 필요해지는 문제가 발생합니다. 라우터의 등장 라우터(router)는 신호를 전달하는 목적을 가지고 있는 특수한 소형 컴퓨터입니다. 이것은 관제탑 ..