전체 글

전체 글

    [JAVA] 프로그래머스 - 다트 게임 LV1

    [JAVA] 프로그래머스 - 다트 게임 LV1

    문제는 아래 링크를 통해 확인해주세요. https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 조건 및 설계 점수 : 0~10 보너스 : S(1), D(2), T(3) 옵션 : 옵션은 존재하지 않을 수도 있다. * : 위치 기준 i와 i-1를 2배 한다. (만약 i=0이라면 i만 2배한다.) *와 * 중첩 : 위와 마찬가지로 진행하면 된다. (결국 i-1의 score는 4배가 된 셈이다.) #와 * 중첩 : i-1에 대해서 -1배가 적용된 값에 그대로 2배를 적용한다. (-2배) # : 위치 기준 i에 -1배 한다.(즉 마이너스) 내 생각 길이 3인 int형 배열 score에 값을 넣어주..

    익명 클래스(익명 객체)

    익명 클래스(익명 객체)

    이번 포스팅에서는 익명 클래스/객체에 대해 알아볼 것입니다. 목차는 아래와 같습니다. 목차 익명 클래스/객체의 정의와 사용하는 이유 익명 클래스/객체를 어떻게 사용하는가? 익명 클래스/객체를 사용하는 두가지 상황(Interface 구현, 추상 클래스 상속)과 주의 사항 일회성으로 사용되는 기능을 '일반클래스의 인스턴스로 생성한 것' => '익명 클래스/객체로 변환'하는 예제 익명 클래스/객체? 익명 클래스는 내부 클래스이자 이름이 없는 "익명" 클래스입니다. 즉, 이름이 없는 일회용 클래스로 클래스 정의와 인스턴스(객체) 생성을 동시에 할 수 있습니다. 익명 클래스(익명 객체)는 인터페이스를 구현하는 클래스 혹은 부모 클래스를 상속받는 클래스 중 일회성에 그치는 클래스를 이름이 없는 클래스로 생성하고 동..

    프로세스(Process)와 스레드(Thread)

    프로세스(Process)와 스레드(Thread)

    이번 글에서는 프로세스와 스레드에 대해, 그리고 차이점을 얘기하겠습니다. 추가로, 프로세스 구조에 대해 간단히 다룰 예정입니다. 프로세스와 스레드 프로세스와 스레드는 둘다 "단위" 개념입니다. 프로세스란 프로그램이 실행되면서 운영체제에 의해 필요한 주소 공간, 메모리 등의 시스템 자원을 할당받고, 여러 작업을 처리하게 되지요. 이때의 작업 단위가 입니다. 스레드는 한 프로세스 내에서 작업을 분산해서 효율적으로 처리하는 실행의 단위입니다. 결국, 프로세스 하나에서 자원을 공유하면서 일련의 과정을 수행하는 것입니다. (멀티 스레드 환경으로 구성되어야 효율성 향상을 경험할 수있습니다.) 좀더 구체적으로 이야기하면, 💡 프로세스 먼저 프로세스가 실행되기 위해서는 메모리 할당이 이루어지고, 할당된 메모리 공간으로..

    [Concept] 인접행렬과 인접 리스트(LinkedList, ArrayList)

    [Concept] 인접행렬과 인접 리스트(LinkedList, ArrayList)

    DFS와 BFS 문제를 풀기위해서는 무조건 알고 있어야하는 개념이 그래프입니다. 그리고 그래프를 구현하는 방법으로 인접행렬과 인접리스트가 있습니다. 이번 글에서는 각각의 장단점과 Java로 구현하는 것으로 마무리하겠습니다. (+LinkedList와 ArrayList의 장단점) 그래프 그래프란 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조입니다. 그래프에서 쓰이는 용어는 정점 (vertex) : 노드라고도 하며 데이터가 저장되는 원소 간선 (edge) : 링크라고도 하며 정점 간의 관계 그외에도 인접 정점, 차수, 경로 등의 용어가 있습니다. 그래프 구현 그래프를 구현하는 방법은 배열(Array)을 사용하는 인접 행렬, 리스트를 사용하는 인접 리스트가 있습니다. 그리고 인접 리스트를 구현하..

    JVM(Java Virtual Machine)의 구조 - 메모리

    JVM(Java Virtual Machine)의 구조 - 메모리

    JVM은 클래스 로더 시스템, 메모리, 실행 엔진, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리, 총 4개로 구성되어 있습니다. 한번에 다루기 많은 내용이라 나눠서 포스팅할 예정입니다. 메모리 (현재 포스팅) 클래스 로더 시스템과 실행 엔진 이번 포스팅은 '메모리'에 대해 다루겠습니다. Runtime Data 영역에는 메서드(Method 혹은 Class) 영역(Area), 스택(Stack) 영역, 힙(Heap) 영역, 네이티브 메서드(Native Method ) 스택 영역으로 구성됩니다. 1️⃣ 메서드(클래스) 영역 클래스가 메모리 상에 올라가는 영역입니다. JVM이 동작하고 클래스가 로드될 때 적재되서 프로그램이 종료될 때까지 저장됩니다. 구성 클래스 구조 FQCN(클래스 이름(풀패키..

    Stack과 Heap.. 그리고 Garbage Collection

    Stack과 Heap.. 그리고 Garbage Collection

    JVM의 구조는 클래스로더, 메모리 영역(Runtime Data Area), 실행 엔진, 가비지 컬렉션, 네이티브 메소드 인터페이스(JNI)+네이티브 메소드 라이브러리 로 구성되어있습니다. 그리고 Runtime Data Area 에는 Method Area, Heap, PC Registers, Stack, Native Method Stack 로 구성되어있습니다. (참고) 간단히, 스택과 힙 스택 컴파일 타임에 할당되는 메모리 영역입니다. 원시 타입의 데이터가 값과 함께 할당되고, Heap 영역에 생성된 Object 타입 데이터의 참조 변수(주소값)가 할당됩니다. 프로세스가 메모리에 로드 될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없습니다. 힙 런타임에 할당되는 메모리 영역입..