JDK, JRE를 공부하다가 JVM이라는 용어가 많이 나와 공부한 결과를 글로 남긴다. 여기와 여기의 글이 많은 도움이 됐다. 글이 길어져 2, 3편으로 나누었다. JVM이란? Java Virtual Machine의 약자로 말 그대로 "자바 가상 머신"이며, 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. (가상 머신이란 어떠한 프로그램을 실행하기 위한 물리적인 환경, 즉, 하드웨어를 소프트웨어로 구현한 것이다) JVM의 주요 기능은 시스템 메모리를 관리하면서 자바 기반의 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. 간단히 말하면 어떠한 환경에서든 Java 코드의 변경 없이 실행되게 해준다. 중요하게 볼 부분은 "메모리를 관리(Garbage Collection, GC)"한다는 것과 "이식..
Study
이 문제도 반 년 전쯤에 풀었던 문제다. 복습 겸 내 풀이와 가장 빠른 풀이를 남겨본다. 문제는 여기에서 확인해보면 된다. 문제 설명 간단하게 문제를 설명하자면, 한 문자열에서 가장 긴 Palindrome을 찾는 것이다. 여기서 Palindrome이란, '회문'이라고도 불리며, 앞에서 읽어도 뒤에서 읽어도 같은 문자열을 뜻한다. 예를 들면, 'abcba'나 'abba'는 Palindrome이라고 할 수 있다. Palindrome인지 확인하는 함수는 Two Pointer 방법이나, 파이썬에서는 [::-1]을 이용하면 쉽게 구현할 수 있다. 내 풀이 코드 먼저 보자. import re class Solution: def isPalindrome(self, s:str) -> bool: return s == s[..
앞서 작성한 1편과 2편에 이은 마지막 3편이다. 서브넷 마스크에 대해 간단히 작성해보려고 한다. 서브넷 마스크(Subnet Mask)란? 서브넷 마스크는 'Subnet'과 'Mask'라는 두 단어로 이루어져 있는데, 뜻을 풀어쓰면 아래와 같다. '하위(Sub) 네트워크(net)를 구분하는 표기(Mask) 법' 이게 무슨 소린가 싶지만, 이럴 땐 역시 비유를 들어 생각해보는 것이 최고다. 어떠한 2층짜리 주택이 있다고 하자. 이 주택을 소유하고 있는 사람은 2층에서 거주 중이며, 1층에는 세를 주어서 다른 가족이 들어와 살고 있다. 이 주택에 거주하고 있는 두 가구는 주소는 거의 같지만, 소유주는 '2층'에, 세입자는 '1층'에 살고 있으므로 주소의 마지막 부분이 엄연히 다르다. 그래서 택배나 우편물을 ..
앞의 IP 주소 해석 글과 이어지는 글이다. IP 주소 분류 - 클래스 ip 주소는 여러 가지 분류 및 구분 방법이 있는데, 그중 하나인 클래스(class)라는 것으로 분류하는 방법이다. 총 다섯 개의 클래스(A, B, C, D, E)가 존재하는데 하나씩 보자. A클래스 대규모 네트워크 환경에 쓰인다. ip 주소 4마디 중 첫 번째 마디의 숫자가 1~126(약 1,600만 개 ip 주소 사용 가능)까지 사용된다. B클래스 중규모 네트워크 환경에 쓰인다. ip 주소 4마디 중 첫 번째 마디의 숫자가 129~191(약 65,000개 ip 주소 사용 가능)까지 사용된다. C클래스 소규모 네트워크 환경에 쓰인다. ip 주소 4마디 중 첫 번째 마디의 숫자가 192~223(254개 ip 주소 사용 가능)까지 사용..
최근 ip 주소를 자주 마주치며 그동안 ip 주소에 대해 정확히 모르고 있다는 생각이 들었다. 사실 어느 정도 지식이 있는 수준이라면 네이버 지식백과(링크)를 보면 충분하다. 나도 저 링크의 글을 읽고 애매모호하던 개념들을 다시금 바로 잡았다. 그래도 후에 또 까먹거나 제로 베이스로 찾아 들어온 분들을 위해 위 링크의 글을 조금 더 쉽게 풀이해서 작성했다. IP 주소란? 말 그대로 주소다. 택배사에서 택배를 발송하려면 고객의 주소를 알아야 하듯이, 인터넷이라는 거대한 네트워크 망에 연결된 컴퓨터(혹은 모바일 기기 등)도 주소가 필요하다. 그게 바로 IP 주소다. IP 주소 표기 방법 사람이 사는 주소는 "서울시 xxx구 xxx동 xxx-x"처럼 표기하는데, ip 주소는 어떻게 표기할까? 우리가 어렴풋이 ..
문제는 여기에 들어가서 보면 된다. 무려 11개월 전에 풀었던 문제인데, 복습할 겸 글을 작성한다. 제출 기록들을 보니, 이때는 알고리즘 코딩을 많이 안 해봤을 때라 혼자 시도하다가 결국 discussions에서 풀이를 찾았던 것 같다. 그중 가장 빨랐던 풀이는 아래와 같다. class Solution(object): def lengthOfLongestSubstring(self, s): subs = {} start = max_length = 0 for i, x in enumerate(s): if x in subs: sums = subs[x] + 1 if sums > start: start = sums num = i - start + 1 if num > max_length: max_length = num ..
가끔 영어로 된 강의나 글을 읽다 보면 Parameter와 Argument가 구분되어 사용되는 것을 볼 수 있다. 구분 지어 부르는 것이 맞기도 하고. 하여튼 나도 볼 때마다 까먹고 찾아보게 돼서 글을 남긴다. Parameter == 파라미터 == 매개변수 한글로 번역하면 '매개변수'라는 뜻이다. 즉, 함수를 정의할 때 외부에서 들어오는 임의의 값을 뜻한다. 예를 들어, 아래처럼 a와 b를 받아 a+b를 리턴하는 함수가 있다고 하면, def addTwoNum(a, b): return a + b a와 b가 파라미터이다. Argument == 아규먼트 == 인수 한글로 '인수', 혹은 '전달값'이나 '전달 인자'라고 쓰는 경우도 봤다. 즉, 함수를 호출할 때 사용하게 되는 일련의 값들을 뜻한다. 예를 들어,..
Top 100 Liked Questions 중 하나인 Word Search 풀이를 공유한다. 문제를 읽어보면 dfs로 풀어야 할 것 같은 느낌이 빡 오는 문제이다. 내 풀이 나는 board의 (0, 0)부터 (m-1, n-1)까지 하나씩 돌며 dfs를 사용했다. 그 과정에서 visited라는 board와 같은 크기의 boolean 값으로 이루어진 2차원 리스트를 두었다. 여차 저차 해서 구현한 나의 풀이는 아래와 같으며, 결과는~~ class Solution: def dfs(self, board, word, row_idx, col_idx, curr_string, visited): if len(curr_string) == len(word): if curr_string == word: return True ..
최근에 원격 서버와 연동해야 하는 일이 생겨서 ip 주소에 대해 알아보다가 문득 내 ip 주소를 확인하는 방법에 대해 까먹은 것에 충격을 받아서 글로 남겨두려고 한다. 윈도우(Windows)의 경우 1. 키보드의 윈도우 키 클릭(혹은 시작 메뉴) 2. cmd 입력 3. ipconfig 입력 4. IPv4 주소 - - - - : xxx.xxx.xxx.xxx 라고 써져 있는 것이 ip 주소 맥북(Mac)의 경우 터미널 이용 1. 터미널 창을 킨다 2. ifconfig | grep inet 입력 3. ipconfig 입력 4. IPv4 주소 - - - - : xxx.xxx.xxx.xxx 라고 써져 있는 것이 ip 주소 맥북 환경설정 이용 1. 시스템 환경설정 켜기 2. 네트워크 클릭하면 ip 주소 확인 가능 ..