320x100

전체 글 435

98. Validate Binary Search Tree [Medium]

출처: https://leetcode.com/problems/validate-binary-search-tree/ Validate Binary Search Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이진 트리의 Root가 주어졌을 때, 해당 트리가 유효한 이진 검색 트리 인지(BST) 검증하는 문제다. 유효한 이진 트리는 다음과 같다. 1. Node의 왼쪽 하위 트리에는 노드의 Key보다 작은 Key만 존재해야 한다. 2. Node의 오른쪽 하위 ..

실전에서 알아보는 홀펀칭 방법

NAT을 사용하게 되면 내부에 연결된 host들은 Public IP가 아닌 Private IP를 사용하게 된다. 다른 LAN에서는 Private IP끼리 통신은 불가능하므로 홀펀칭이라고 하는 방식을 사용해 통신을 하게 된다. 간단히 3단계로 정리하자면 1. Private IP로 전달해본다. 2. 안되면 Public IP로 전달해본다. 3. 그래도 안되면 Realy Server로 패킷 전달을 요청한다. (TCP/UDP) 각자의 클라이언트는 gethostname을 통해 본인의 IP를 확인한다. (이때 확인되는 IP는 Private인지 Public인지 스스로는 알 수 없다.) 그래서 다른 외부에 있는 서버로 데이터를 보내면 외부 서버는 클라이언트의 Public IP와 Port를 확인하게 되고, 해당 정보를 클..

네트워크/UDP 2021.06.18

RTTI란?

RunTime Type Infomation 런타임에 타입 정보를 알 수 있다는 의미다. 즉, 실행 중에 클래스 포인터의 실제 타입을 확인할 수 있다. C++는 C++98부터 RTTI를 지원해왔다. typeid 연산자를 이용해 vftbl에 있는 정보로 타입을 확인한다. vftbl의 정보를 확인하므로 두 클래스가 상속 관계라도 virtual 함수가 포함되어야 한다. dynamic_cast dynamic_cast는 RTTI를 이용해 현재 객체의 정보를 검사할 수 있다. dynamic_cast를 통해 형 변환을 수행하고, Parent의 포인터가 실제로 가리키는 객체의 타입과 동일하다면 유효한 포인터를 반환하고, 아니라면 nullptr을 반환한다. 다만 속도가 느리기 때문에 잘 사용하지 않는다. 커스텀 cast ..

[MSSQL] 호환성 수준

출처: https://docs.microsoft.com/ko-kr/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver15 ALTER DATABASE 호환성 수준(Transact-SQL) - SQL Server ALTER DATABASE 호환성 수준(Transact-SQL) docs.microsoft.com 설치한 SQL과 별개로 사용자가 임의로 특정 버전의 SQL엔진이랑 호환되도록 설정할 수 있다. 데이터베이스 엔진 확인 - SQL SELECT SERVERPROPERTY('ProductVersion'); 현재 호환성 수준 - SQL SELECT name, compatibility_level FROM..

DB/MSSQL 2021.06.17

100. Same Tree [Easy]

출처: https://leetcode.com/problems/same-tree/submissions/ Same Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 두 트리가 동일한지 체크하는 문제였는데, nullptr 체크를 if문 한 개로 하려다가 에러 먹음...ㅠㅠ source /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNo..

[MSSQL] 이중화 방식

MSSQL에서 지원하는 이중화는 5가지다. 종류 설명 Replication (복제) 원본 DB의 데이터를 다른 데이터베이스로 복사 사용자 분산 효과, 피어-투-피어 복제로 구성할 경우 고가용성 보장 자동 장애조치 기능이 없음 게시자: 배포될 원본 데이터베이스(게시)를 유지 관리하는 서버(주 서버) 배포자: 여러 게시자에게서 데이터를 받아와 여러 구독자에게 배포하는 역할 구독자: 배포자로부터 데이터를 받는 서버 복제 유형 - 스냅샷 복제: 게시자의 게시를 스냅샷 에이전트가 정기적으로 저장하면 배포 에이전트는 저장 데이터를 구독자에게 전달 - 트랜잭션 복제: 초기에 스냅샷 복제하고, 트랜잭션이 발생(데이터 및 스키마 변경)하면 로그 리더가 해당 내용을 구독자에 반영(구독자는 읽기 전용) - 병합 복제: 초기..

DB/MSSQL 2021.06.15

7. Reverse Integer [Easy]

출처: https://leetcode.com/problems/reverse-integer/ Reverse Integer - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 정수를 반대로 출력하면 된다. ex 123 -> 321. class Solution { public: int reverse(int x) { if (0 == x) { return 0; } int64_t ret = 0; while (0 != x) { int64_t temp = (ret * 1..

12. Integer to Roman [Medium]

출처: https://leetcode.com/problems/integer-to-roman/ Integer to Roman - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 입력된 정수를 로마표기법으로 변환하는 문제였다. 1~3까지는 1의 개수로 표현 4는 1과 5로 표현 5는 5 6~8까지는 5와 1의 개수로 표현 9는 1과 10으로 표현 어차피 단위별 문자가 정해져있으니 맨 앞의 지수(?)와 자릿수를 가지고 문자를 판별해서 스트링을 합쳐주는 방식으로 해결했다..

113. Path Sum II [Medium]

출처: https://leetcode.com/problems/path-sum-ii/ Path Sum II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이진 트리의 루트와 목표 합계 점수를 Input으로 받으면 조건에 맞는 모든 루트-리프 경로를 구하는 문제다. (리프: 자식 노드가 없는 노드) 최종 목표를 저장하는 2차원 벡터 vvec와 내부 임시로 쓰는 1차원 벡터 vec를 써서 해결했(었)다. source /** * Definition for a bin..

1775. Equal Sum Arrays With Minimum Number of Operations [Medium]

https://leetcode.com/problems/equal-sum-arrays-with-minimum-number-of-operations/ Equal Sum Arrays With Minimum Number of Operations - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1부터 6까지의 목록을 주고, 각 목록의 요소 값을 한 번에 1~6 중에서 임의로 변경시킬 수 있다고 할 때, 두 목록의 합을 같게 만드는데 몇번의 과정이 필요한지 구하는 문제이..

320x100