분류 전체보기
[JAVA] Programmers : 등산코스 정하기
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오랜만에 글을 작성한다. 그 동안 꾸준히 알고리즘은 학습하고 있었지만 글 작성을 할 여유가 없어서 작성하지 못했는데 이 문제는 해결 방법을 공유해두면 좋을 것 같아서 작성해보려고 한다. 문제읽기 XX산은 n개의 지점으로 이루어져있는데 각 지점은 1 ~ n 까지 번호가 붙어있고 해당 지점들은 출입구, 쉼터, 산봉우리 중 하나이다. 각 지점으로 이동할 때 등산로를 이용해야하는데 이 때 등산로별로 소요되는 시간이 다르다. 이 때 각 지점에 방문할 때마다 휴식을 취할 수 있는데 휴식 없이 이동해야하는 시간 중 ..
JVM? GC? 는 무엇을 의미하는지 간단히 알아보기
JVM 이란 개요 Java Virtual Machine 의 줄임말로써 직역하면 자바 가상 머신이다. 자바는 초기 설계단계에서 어느 환경에서 동일하게 실행될 수 있는 것을 목표로 제작하였는데, 이를 위해서 JVM이 탄생하게 되었다. JAVA의 실행 과정 그렇다면 JVM이 어느 부분에서 사용될까? 아래에 자바의 실행 과정을 그림으로 표현하였다. 간단하게 보면 자바는 자바 코드를 먼저 컴파일을 통해 바이트 코드로 바꾸고 해당 코드를 JVM이 운영체제에 맞게끔 실행시켜주는 2단계 구조를 가지고 있다. 그래서 어느 환경이든 JVM만 설치된다면 동일하게 실행이 되어 같은 결과를 확인할 수 있다. 요약 그래서 쉽게 이야기하면 JVM은 바이트 코드로 변환된 자바 코드를 운영체제 환경에 맞게 실행시켜주는 도구 정도로 이..
[JAVA] Programmers : 배달
문제 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 해결방법 N개의 마을이 있고 각 마을을 잇는 도로가 있다. 해당 도로를 건너는데 시간은 도로마다 다르다. 이때 1번 마을에서 각 마을에 배달을 하려고 하는데 K 시간 이하인 곳만 배달이 가능해서 배달 가능한 마을의 수를 구하는 문제이다. 문제를 보자마자 다익스트라가 떠올라서 다익스트라를 이용해서 풀이를 했다. 각 마을의 도로의 정보는 인접 리스트를 이용해서 정리하고, 다익스트라 배열을 마을 개수만큼 생성한 다음 문제에서 나올 수 있..
[JAVA] Programmers : 피로도
문제 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 해결방법 오랜만에 알고리즘 풀이를 들고 왔다. 사실 알고리즘은 꾸준히 풀고 있었는데 시간도 없고 귀찮아서 글은 쓰지 않고 있었다. 문제에 대해 이야기하자면 기본적인 순열 문제라고 볼 수 있다. 순열을 이용해서 던전의 모든 방문 순서를 찾고 해당 방문 순서에 몇 개의 던전이 탐색 가능한지 확인한다. 그다음 그중에서 가장 많은 던전을 방문한 횟수를 출력하면 된다. 코드 class Solution { static int[] result; static bo..
자바 컬렉션 프레임워크(Java Collection Framework) 중 맵(MAP) 정리
자바 컬렉션 프레임워크의 마지막 맵을 정리 해보자. 맵은 아래 그림의 빨간 네모 안의 것들이다. Map Map은 Collection 과 큰 흐름이 달라서 구분되어있다. Map은 Key와 Value를 하나의 쌍으로 저장하는 방식을 사용한다. Map 인터페이스를 구현한 클래스들은 아래와 같은 특징을 가진다. 요소의 저장 순서를 유지하지 않음. 키는 중복을 허용하지 않지만, 값의 중복은 허용함. Map의 대표적인 메서드들은 다음과 같다. 타입 메서드 설명 void clear() 해당 맵의 모든 매핑을 제거 boolean containsKey(Object key) 해당 맵이 전달된 키를 포함하고 있는지를 확인 boolean contanisValue(Object value) 해당 맵이 전달된 값에 해당하는 하나 ..