본문 바로가기
반응형

Computer Science30

[Leetcode] Longest substring without repeating characters 1. 개요 주어진 문자열에서 가장 긴 부분 문자열(연속된 문자로 이루어진 부분)의 길이를 반환합니다.부분 문자열은 중복되는 알파벳을 가지고 있지 않아야 합니다.예) abcdabefgabcda는 a를 2개 포함하므로 탈락입니다.cdabefg에는 중복되는 문자가 없고 가장 깁니다.따라서 정답은 7입니다. 2. 나의 풀이 가장 간단한 방법은 모든 부분 문자열을 구한 다음, 각 문자가 중복되지 않고 가장 긴 것을 찾는 것입니다.저는 전체 문자열에서 시작 문자 char를 선택한 다음,char로 시작하는 부분 문자열을 모두 구하는 방식으로 풀었습니다.class Solution: def lengthOfLongestSubstring(self, s: str) -> int: answer = 0 .. 2025. 9. 18.
[Leetcode] add two numbers 1. 개요 링크드 리스트 형태의 두 숫자를 더한 결과를 링크드 리스트로 반환합니다.예)L1: 3 -> 2 -> 1 (123)L2: 6 -> 5 -> 4 (456)123 + 456 = 579 이므로정답: 9 -> 7 -> 5 2. 나의 풀이 class Solution: # 클래스 안에 정의한 함수는 인스턴스 메서드로 취급되므로, 첫 번째 인자가 self여야 한다. def getNum(self, node: Optional[ListNode]): if node is None: return 0 num = node.val next = node.next i = 1 while next: num += (10 ** .. 2025. 9. 17.
[Leetcode] two-sum 1. 개요 숫자 배열 nums과 목표 숫자 target 하나가 주어집니다.숫자 배열에 있는 숫자 두 개를 더해서 목표 숫자를 만들고,각 숫자의 인덱스를 배열로 반환해야 합니다.예를 들어,[1, 2, 3] 과 5가 주어진 경우2 + 3 = 5 이므로, [1, 2]를 반환해야 합니다.문제의 정답은 반드시 존재합니다. 2. 단순 무식한 방법 이중 루프를 돌면서 리스트에서 두 개의 숫자를 골라 더해보는 방법이 있습니다.쉽고 간단한 대신 O(n^2)의 시간 복잡도를 가집니다.class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i, n in enumerate(nums): for j, m.. 2025. 9. 16.
DNS 캐시와 hosts 설정 1. DNS란 DNS는 Domain Name Service의 약자로, 도메인 이름을 IP 주소로 변환해주는 시스템입니다.컴퓨터 통신을 위해서 IP 주소를 사용하는 것은 다들 알고 계실 텐데요,의미없는 숫자로 된 IP 주소를 기억하고 사용하기란 어렵기 때문에www.google.com 같은 도메인 이름을 입력하면 이를 실제 구글 서버의 IP로 변환하여 통신할 수 있도록 해주는 것이 바로 DNS입니다.일반적으로는 다음과 같은 프로세스를 거치게 되는데,1 도메인을 등록할 때 DNS 서버 즉, 네임 서버에 대한 NS 레코드를 지정할 수 있습니다.2 사용자가 브라우저에 도메인을 입력하면 브라우저는 NS 레코드를 읽어 네임 서버에게 IP를 질의합니다.3 그럼 네임 서버에서 변환된 IP를 반환하고, 이를 이용해서 서.. 2025. 6. 27.
서브넷 마스크 완벽 이해하기 서브넷 마스크란네트워크 주소와 호스트 주소를 구분하는 32bit 숫자를 말합니다.네트워크 주소가 어떤 회사에 찾아가기 위한 주소라면호스트 주소란 회사 내에서 사용하고 있는 여러 장치들을 식별하기 위한 주소입니다.서브넷 마스크를 이용해 네트워크와 호스트 부분을 분리함으로써 한정적인 IP 주소를 효율적으로 활용할 수 있게 됩니다.  원리는아주 단순한데,IPv4 주소는 32개의 bit로 구성되어 있습니다.서브넷 마스크는 이 bit 중에 네트워크 주소를 표시하기 위해 사용되는 비트를 1로 표시합니다.8칸을 네트워크 주소에 쓰겠다 할 때 서브넷 마스크는 다음과 같습니다.11111111000000000000000000000000십진수로는 255.0.0.0 입니다. 나머지 24비트는 호스트를 구분하는데 사용됩니다.1.. 2024. 12. 13.
로드 밸런서의 헬스 체크 로드 밸런서 Load Balancer란 로드 밸런서는 서버의 부하 Load를 분산 Balancing하는 네트워크 장비 또는 소프트웨어입니다.회사를 다녀보면 동료들이 모두 똑같이 일을 하고 있지 않다는 것을 알게 됩니다. 누구는 매일 6시만 되면 집에 가고 누구는 매일 늦게까지 남아서 일을 하죠. 물론 능력의 차이도 있겠지만 일이 고르게 분배되지 않기 때문입니다.좋은 체계와 상사가 있는 회사에서는 일감을 적절하게 분배해서 나눠주기 때문에 구성원의 불만과 피로도가 적고, 과부하로 인해 갑자기 멈추거나 폭발하는 사람도 없을 겁니다.로드 밸런서가 바로 이런 역할을 합니다.사용자의 요청이 들어오면 연결된 웹 서버 또는 WAS로 요청을 전달해 주고 서버들이 열심히 일을 해서 만들어낸 결과물을 다시 사용자에게 보여줍.. 2024. 6. 2.
반응형