개발

    [Java] JVM? JRE? JDK?

    JVM (Java Virtual Machine) 운영체제에 종속받지 않고 실행하기 위한 프로그램이라고 보면 됩니다. 여러 운영체제에서 기계어로 컴파일하지 않고 컴파일러를 통해 JVM이 읽을 수 있는 바이트 코드(.class)로 변환합니다. 그 후 JVM이 운영체제에 맞는 기계어로 번역해줍니다. 때문에 운영체제에 상관없이 JVM만 있다면 프로그램을 실행할 수 있는 것입니다. JRE (Java Runtime Environment) 컴파일 된 Java 프로그램을 실행하기 위한 환경 입니다. JVM과 실행에 필요한 라이브러리가 포함되어 있습니다. JDK (Java Development Kit) Java 실행 및 개발에 필요한 요소를 갖춘 SDK(Source Development Kit) 입니다. JRE과 Jav..

    객체지향 프로그래밍과 설계

    객체지향 프로그래밍 (OOP) 등장 배경: 프로그램이 점차 거대해지면서 등장! 프로그램의 동작을 객체 단위로 작게 나누고 합쳐서 하나의 프로그램을 구성하자. 객체 간 협력 관계에 주목 🤩 객체지향의 특성 캡슐화 기능을 수행하는 최소 단위 정보의 은닉 (접근 지정자) 상속 추상 : 상위, 부모, super, 일반화 구체 : 하위, 자식, (this), 구체화 공통된 기능을 여러 객체에게 전달하고 싶을 때 (일반화)할 때 오류에 빠지지 않도록 조심 객체 간 관계와 의미를 잘 파악할 필요가 있음! 추상화 추상 객체 ↔ 구체 객체(구현체) (= 부모 ↔ 자식 = 상위 ↔ 하위 = 일반화 ↔ 구체화) 의미적 추상체 / 추상 기능을 가진 객체(abstract) / 객체 자체가 추상적 (interface) 다형성 추..

    [Java] String, StringBuilder, StringBuffer

    Java에서 문자열을 다루는 클래스는 String, StringBuilder, StringBuffer 가 있습니다. 적은 양의 연산을 수행할 때는 보통 String 클래스를 사용합니다. 그러나 연산량이 많아질 경우에는 어떤 문제가 발생하는지를 알아보며 StringBuilder와 StringBuffer를 왜 사용하는지 이해해봅시다. 상수 풀 (Constant Pool) Java에서 String은 불변성이라는 독특한 특성을 갖고 있습니다. 문자열 리터럴을 선언할 때 JVM은 Heap 공간 안의 String Pool에 오브젝트를 생성하고 그에 대한 참조를 스택에 저장합니다. 그리고 동일한 문자열에 대해서는 이미 String Pool에 존재하는 오브젝트를 참조하도록 하는 것이죠. 이렇게 되면 메모리 효율성을 극..

    [React.JS] useEffect

    개념 React.JS의 useEffect는 클래스 Component를 사용하지 않아도 함수형 Component에서 LifeCycle에 관여할 수 있도록 하는 Hook 기술 입니다. Component가 Mount, Update, Unmount 시점에서 동작하도록 Callback 함수를 사용합니다. 방법 먼저 react 에서 useEffect 를 import 합니다. import { useEffect } from 'react'; useEffect 함수의 원형 입니다. 첫 번째 파라미터는 Callback 함수, 두 번째 파라미터는 Dependency Array 로 주는 것이 일반적인 형태입니다. useEffect(() => {}, []); 1. Callback 함수와 빈 배열이 주어지면 componentDid..

    [React.JS] useRef

    개념 Javascript 문법으로 특정 Element에 접근할 때에는 getElementById, getElementByClassName 등으로 접근해서 사용합니다. React.js 에서도 이처럼 특정 상황마다 특정 Element에 접근해서 이벤트를 처리할 수 있습니다. (예를 들어, 회원가입 시 누락된 항목에 대해 경고 팝업을 띄우지 않고 포커스를 주어 곧바로 입력 가능하게 하는 등...) 방법 React에서 제공하는 useRef 를 사용하면 됩니다. 1. 가장 먼저 useRef를 import 해줍니다. import { useRef } from 'react'; 2. useRef 객체를 생성해줍니다. const emailInput = useRef(); 3. Element의 'ref' Attribute에 ..

    [Python] k진수에서 소수의 개수 구하기 (2022 Kakao)

    [Python] k진수에서 소수의 개수 구하기 (2022 Kakao)

    이 문제는 2022년도 카카오 신입 공채 1차 온라인 코딩 테스트에서 출제된 문제이며 프로그래머스에서 풀이했습니다. 문제 설명 양의 정수 n 이 주어집니다. 이 숫자를 k 진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0 처럼 소수 양쪽에 0 이 있는 경우 P0 처럼 소수 오른쪽에만 0 이 있고 왼쪽에는 아무것도 없는 경우 0P 처럼 소수 왼쪽에만 0 이 있고 오른쪽에는 아무것도 없는 경우 P 처럼 소수 양쪽에 아무것도 없는 경우 단, P 는 각 자릿수에 0 을 포함하지 않는 소수입니다. 예를 들어, 101 은 P 가 될 수 없습니다. 예를 들어, 437674 을 3 진수로 바꾸면 211020101011 입니다. 여기서 찾을 수 있는..

    [Python] 정수 삼각형 (Programmers Lv. 3)

    [Python] 정수 삼각형 (Programmers Lv. 3)

    문제 설명 제한 사항 입출력 예 풀이 주어진 문제에 대한 최적값을 구하는 것이기 때문에 Dynamic Programming(동적 계획법)으로 접근해볼 수 있습니다. 하위 문제의 수가 기하급수적으로 증가할 때 유용한 접근법입니다. 즉, 하위 문제를 해결하는 과정에서 DP Table을 채우면서 주어진 문제를 해결할 수 있는 방법이라고 할 수 있습니다. 해설 (x, y)에서부터 시작한다고 하면, (x, y+1), (x+1, y+1)을 계산해 최댓값을 계속 저장하게 됩니다. (x, y)에서 계산된 (x, y+1), (x+1, y+1)과 (x+1, y)에서 계산된 (x+1, y+1), (x+2, y+1) 중에서 (x+1, y+1)이 겹칩니다. 매 계산마다 현재 해당 좌표에 저장된 값과 새로 계산된 값의 크기를 비..