
알고리즘/문제풀이 2022. 4. 26.
[백준알고리즘] 7568. 덩치 풀이 (Java)
❓ 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"라고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165)라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼..

알고리즘/문제풀이 2022. 4. 25.
[백준알고리즘] 2231. 분해합 풀이 (Java)
❓ 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자릿수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 예제 1 입력 216 출력 198 ❗ 내 풀이 import java.util.*; cla..

알고리즘/문제풀이 2022. 4. 12.
[백준알고리즘] 2798. 블랙잭 풀이 (Java)
❓ 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때,..

알고리즘/문제풀이 2022. 3. 16.
[LeetCode] 20. Valid Parentheses (Easy) 풀이
❓ 문제 Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. '(', ')', '{', '}', '[' 및 ']' 문자만을 포함하는 문자열이 주어지면 입력 문자열이 유효한지 확인한다. 문자열이 유효한 경우 : 열린 괄호는 반드시 같은 타입의 괄호로 닫혀야 한다. 열린 괄호는 반드시 올바른 순서로 닫..

알고리즘/문제풀이 2022. 3. 16.
[LeetCode] 14. Longest Common Prefix (Easy) 풀이
❓ 문제 Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string "". 문자열 배열 중에서 가장 긴 공통 접두사 문자열을 찾는 함수를 작성하자. 공통된 접두사가 없으면 빈 문자열 ""을 반환한다. Example 1: Input: strs = ["flower","flow","flight"] Output: "fl" Example 2: Input: strs = ["dog","racecar","car"] Output: "" Explanation: There is no common prefix among the input..

알고리즘/문제풀이 2022. 3. 14.
[LeetCode] 13. Roman to Integer (Easy) 풀이
❓ 문제 Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. 로마 숫자는 I, V, X, L, C, D, M의 7가지 기호로 표시된다. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just two one's added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II. Roman numerals are usually written..

DataBase/PostgreSQL 2022. 3. 11.
[PostgreSQL] 이전 행 및 다음 행을 비교하는 방법 - Lag와 Lead
📢 들어가며 전 행의 데이터를 비교하여 같으면 ''을 다르면 원래 값을 리턴하는 로직 구현해야 했다. Ag Grid 라이브러리에서 제공하는 valueFormatted, valueGetter, cellClassRulers 등을 사용할 때, 같은 데이터가 중복으로 2번 이상 타는 것이 문제였다. 중복으로 타면서 전 행의 데이터를 비교해야 하는데 자기 자신과 비교하게 되는 등의 문제가 발생했다. 이를 해결하고자 params.node.rowIndex를 받아서 체크하면서 해당 index보다 작으면 실행이 안되게 구현하였다. 적은 데이터일 때는 문제 없이 작동하는 듯 보였으나 무한 스크롤을 사용하는 서버 사이드 그리드이기에 스크롤할 때 문제가 발생한다. 결국, 이 문제는 서버에서 해결해야 했다. 알아보니 쿼리문에서..

알고리즘/문제풀이 2022. 3. 11.
[LeetCode] 9. Palindrome Number (Easy) 풀이
❓ 문제 Given an integer x, return true if x is palindrome integer. An integer is a palindrome when it reads the same backward as forward. For example, 121 is a palindrome while 123 is not. 정수 x가 주어졌을 때, x가 회문이면 true를 반환한다. 앞으로 읽었을 때와 뒤로 읽었을 때 같을 경우 해당 정수를 회문이라고 한다. 예를 들어, 121은 회문이지만 123은 회문이 아니다. Example 1: Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right..

알고리즘/문제풀이 2022. 3. 11.
[LeetCode] 1. Two Sum (Easy) 풀이
❓ 문제 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order. 정수로 이루어진 배열과 정수인 target이 주어지면, 두 숫자의 합이 target이 된 인덱스를 반환한다. 각각의 입력은 단 하나의 방법이 있다고 가정하며, 같은 배열의 요소를 두 번 사용하지 않도록 한다. 순서 상관없..

라이브러리/Ag Grid 2022. 2. 21.
[Ag Grid] Vue - valueFormatter, tooltipValueGetter
ag grid에서 value를 수정하여 보여주는 일들이 있다. ag grid에서 제공하는 속성들을 이용하여 나타내 보자! 아래 두 속성들은 grid columnDefs 내에서 사용한다. 1. valueFormatter 이름부터 value의 형태를 바꿔준다는 느낌을 풍기고 있다. return에 나타나 주기를 원하는 값을 넣고 리턴해주자. 여기서 params.value는 grid columnDefs에서 해당 field의 data가 들어간다. valueFormatter : params => { // 원하는 대로 변환하기 return ; } data: function () { return { columnDefs: [ { headerName: 'age', field: 'age', valueFormatter ..

HTML & CSS & JavaScript 2022. 2. 21.
[JavaScript] 객체로 이루어진 배열을 Map을 사용하여 join하기
상황 객체로 배열이 이루어져있다. 각 객체의 속성을 가져와서 join하여야한다. 코드 const arr = [ { seq: 1, name: 'Aa' }, { seq: 2, name: 'Bb' }, { seq: 3, name: 'Cc' }, ]; let result = arr.map(ele => ele.seq); console.log(result); // [1, 2, 3] let joinResult = arr.map(ele => ele.seq).join(','); console.log(joinResult); // "1,2,3" join한 후에 unnset(string_to_array)를 사용하여 더 간편하게 query문을 작성할 수 있다. unnset(string_to_array)에 대한 내용에 대해 더 ..

DataBase/PostgreSQL 2022. 2. 21.
[PostgreSQL] 구분자로 구분된 문자열을 array 배열로 받기(split_part, string_to_array, unnest)
fruit table이 아래와 같은 데이터가 있다고 가정하자. id data 과일 사과|수박|딸기|오렌지|바나나 1. split_part :: 문자열을 구분자로 나눈 다음 몇 번째에 위치한 데이터를 가져오는 함수 먼저, split_part 를 사용하여 구분자로 구분하고 2번째에 위치한 데이터를 불러보자. select split_part(data,'|',2) as 두번째_과일 from fruit where id='과일' * 2를 뺄 경우, 오류가 발생한다. 2. string_to_array :: 문자열을 구분자로 구분하여 배열로 만드는 함수 문자열을 '|'로 구분하여 배열로 반환하는 쿼리문을 만들어보자. select string_to_array(data, '|') from fruit where id='..

DataBase/PostgreSQL 2022. 2. 21.
[PostgreSQL] drop, delete, truncate의 차이점
1. DROP 명령어 개념 : 테이블 자체를 삭제하는 명령어 설명 - 해당 테이블 자체가 삭제된다. - 해당 테이블에 생성되어있던 인덱스, 제약조건 등도 삭제된다. - 삭제 후 되돌릴 수 없다. - DROP TABLE [테이블명] 2. TRUNCATE 명령어 개념 : 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납하는 명령어 설명 - 해당 테이블의 데이터만 모두 삭제되며 테이블 자체가 삭제되는 것은 아니다. - 해당 테이블에 생성되어있던 인덱스도 함께 삭제된다. - 조건을 걸지 못해 데이터를 한꺼번에 다 지운다. - 삭제 후 되돌릴 수 없다. - DDL이다. - TRUNCATE TABLE [테이블명] 3. DELETE 명령어 개념 : 테이블의 조건이 맞는 데이터를 삭제한다. 설명 - 데..

에러모음집 2022. 2. 21.
[오늘의 에러] Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying
📍 Error 내용 Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying Hint: No operator matches the given name and argument types. You might need to add explicit type casts. 다음과 같은 오류 메시지가 발생하였다. 에러 내용을 살펴보면 bigint타입의 데이터에 character varying하는 operator가 존재하지 않는다고 되어있다. 📍 Error 발생 원인 PostgreSQL 8.4 이후 버전부터는 자동으로 타입캐스팅을 해주는 기능이 사라졌기 때문이다. 📍 Error 해결 방법 ..

Java 2021. 12. 29.
3주차 - 연산자
🧡 목표 자바가 제공하는 다양한 연산자를 학습하세요. 📢 About 산술, 비트, 관계, 논리, assignment(=) 연산자 등에 대해서는 이미 알고 있기에 학습 속도 향상 및 시간을 위해 학습하지 않았다. 모르는 부분이 있을 수 있겠지만 그렇다고 처음부터 정리하는 것은 효율적이지 않다고 개인적으로 판단했다. instanceOf, 화살표(->) 연산자, (optional) Java 13. switch 연산자에 대해서만 학습하였다. instanceOf instanceOf 연산자는 객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는 데 사용하는 연산자이다. object instanceOf type instanceOf 예제 Car이 부모이고 FireEngine, Ambulance가 자식인 구조를 ..

DataBase/PostgreSQL 2021. 12. 27.
[PostgreSQL] 프로시저(Procedure)
프로시저 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 프로시저 사용 시 장점 하나의 요청으로 여러 SQL문을 실행할 수 있다. (네트워크에 대한 부하를 줄일 수 있다.) 미리 구문 분석 및 내부 중간 코드로 변환을 끝내야 하므로 처리 시간이 줄어든다. 데이터베이스 트리거와 결합하여 복잡한 규칙에 의한 데이터의 참조 무결성 유지가 가능하게 된다. 간단히 말하면 응용 프로그램 측 로직을 가지지 않고도 데이터베이스의 데이터 앞뒤가 맞게 될 수 있다. JAVA 등의 호스트 언어와 SQL 문장이 확실하게 분리된 소스 코드의 전망이 좋아지는 것, 또한 웹사이트 등 운용 중에도 저장 프로시저의 교체에 의한 수정이 가능하기 때문에 보수성이 뛰어나다. 웹 패치를 할 때 프로시저만 변경되었다면 웹 ..

HTML & CSS & JavaScript 2021. 12. 5.
[JavaScript] URLSearchParams을 이용하여 파라미터를 보기 좋게 만들 때 사용
URLSearchParams를 사용하여 객체로 파라미터를 만들어보려고 한다. URLSearchParams 인터페이스는 URL의 쿼리 문자열에 대해 작업할 수 있는 유틸리티 메서드를 정의한다. URLSearchParams 생성 예제 - 반환값은 : URLSearchParams 객체 인스턴스 // 객체 생성 방법 - 매개변수 : init var URLSearchParams = new URLSearchParams(init); // url 생성자에 전달된 주소를 url.search를 통해 params라는 변수로 검색합니다. var url = new URL('https://example.com?foo=1&bar=2'); var params = new URLSearchParams(url.search); // 문자열..

HTML & CSS & JavaScript 2021. 11. 29.
[CSS] 스크롤바 없애기
overflow 속성 1. auto 스크롤이 contents의 길이에 따라 길어질 경우 자동으로 스크롤 표시(기본값) overflow: auto; 2. scroll 가로/세로 스크롤이 표시 overflow: scroll; 3. hidden 가로/세로 스크롤 표시 안 함 overflow: hidden; 4. overflow-x 가로 스크롤 overflow-x: auto; overflow-x: scroll; overflow-x: hidden; 5. overflow-y 세로 스크롤 overflow-y: auto; overflow-y: scroll; overflow-y: hidden;
잡다한코딩지식 2021. 11. 23.
기본 개발 용어 알아보기 - 디버깅, 컴파일러와 인터프리터, 빌드, 배포, 환경변수
디버깅(debugging) 디버깅 = 디버그(debug)이다. 디버깅은 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정으로 즉, 소프트웨어에 발생하는 문제의 원인을 찾는 것을 말한다. 문제가 발생했다는 것은 현재 개발 중인 상태를 나타내는 의미하기도 하다. 디버거(debugger) : 디버그를 돕는 도구 유래 : 초창기 컴퓨터는 기계에 벌레가 들어가서 고장을 일으키곤 했는 이 벌레(bug)를 찾아 치우는 일에서 debugging이 유래되었다고 한다. 컴파일러와 인터프리터 코드를 기계어 또는 중간 언어로 바꾸는 데 언제 하느냐의 시점에 따라 달라진다. 미리 해놓는 것은 컴파일 언어이고 그때그때 하는 언어는 인터프리터 언어이다. 컴파일..

Vue 2021. 11. 21.
[Vue] Vue-cli2 프로젝트 생성 및 실행
Vue-cli2 프로젝트 생성 방법 1. 프로젝트 생성 프로젝트가 생성되었으면 좋겠는 폴더 위치로 이동하여 아래와 같은 명령어를 입력하시면 됩니다. 이때, VSCode 터미널 창에서는 vue가 아닌 vue.cmd로 명령어를 입력하시면 됩니다. - cmd창 : vue init - VSCode 터미널창 : vue.cmd init template-name과 project-name을 입력하라고 알려줍니다. template은 vue에서 기본적으로 5가지를 제공합니다. 5가지에 대해 알아봅시다. [template 종류] webpack : 모듈번들러를 hot-reload, linting, test, CSS추출 기능 등 대부분의 기능을 갖추고 있는 webpack으로 사용하고, vue-loader를 포함하는 templa..

Vue 2021. 11. 21.
[Vue] Vue-cli 2 설치 방법 및 버전 확인
Vue 3이 나왔음에도 Vue 2를 설치하는 방법을 올리는 이유는 회사에서 아직까지 Vue 2를 사용하고 있기 때문입니다. Vue의 모든 프로젝트를 Vue 3으로 올릴 때까지는 Vue 2를 사용할 것이니 2로 프로젝트를 생성하여 연습해보려고 합니다! 🔨 Vue-cli 2 설치 방법 1. npm 설치 npm이 설치되지 않았다면 아래 링크로 가서 설치방법 참고하시면 됩니다. https://developer-kimmy.tistory.com/31 NPM(Node.js) 설치 및 버전 확인 방법 npm을 설치하기 전에 npm이 무엇인지 간단하게 알아보자. npm이란 npm은 Node Package Manager의 약어로 자바스크립트 프로그래밍 언어인 Node.js를 위한 패키지 관리자이다. 그렇기에 npm은 No..

DataBase/PostgreSQL 2021. 11. 21.
[PostgreSQL] row_to_json VS json_agg 의 차이
개발할 때 data를 json형태로 만들어서 보낼 일들이 꽤 있었다. row_to_json을 주로 사용하였지만 다른 쿼리문들을 보니 json_agg을 사용하는 경우도 있었다. 둘 다 json형태로 보내지만 어떤 차이가 있는 지를 알아보았다. 1. ROW_TO_JSON ROW_TO_JSON은 한 행을 json형태로 만든 것으로 하나의 칼럼에 한 로우(row)씩 들어가 있다. select row_to_json(T)::text as json from ( select 'kim' as name, '2020' as year union all select 'shin' as name, '2021' as year ) as T 2. JSON_AGG JSON_AGG은 한 행을 json형태로 만들고 하나의 칼럼에 모든 로우(..

카테고리 없음 2021. 11. 16.
NPM(Node.js) 설치 방법 및 버전 확인
npm을 설치하기 전에 npm이 무엇인지 간단하게 알아보고 설치해봅시다. npm이란 npm은 Node Package Manager의 약어로 자바스크립트 프로그래밍 언어인 Node.js를 위한 패키지 관리자입니다. 그렇기에 npm은 Node.js로 만들어진 프로그램을 쉽게 설치할 수 있게 도와줍니다. 🔨 Node.js 및 npm 설치 1. Node.js 설치 npm은 위에서 말한 바와 같이 Node.js의 관리자이기에 Node.js를 먼저 설치해야 합니다. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org Node.js 홈페이지에 들어가시면 다운로드를 ..

Java 2021. 8. 27.
2주차 - 자바 데이터 타입, 변수 그리고 배열
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 자료형은 크게 '기본형'과 '참조형' 두 가지로 나눌 수 있는데, 기본형 변수는 실제 값(data)을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소(memory address)를 값으로 가진다. 먼저, 기본형(Primitive Type)에 대해 알아보자. Primitive Type(기본형, 프리미티브 타입) Primitive Type이란 논리형, 문자형, 정수형, 실수형 계산을 위해 실제 값을 저장하는 타입을 말한다. 실제값이 저장되는 공간은 stack 메모리 공간이다. 기본형은 총 8가지이다. 크게는 정수형(byte, short, int, long), 실수형(float, double), 문자형(char), 논리형..

알고리즘/문제풀이 2021. 8. 25.
[프로그래머스] 코딩테스트 연습 - 평균 구하기 Java, JavaScript
문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr return [1,2,3,4] 2.5 [5,5] 5 나의 풀이 JavaScript Vue로 개발하면서 js의 중요성도 점차 깨닫게 되었다. js를 잘 짜는 것도 FE에서 중요하다는 것을 느껴 js도 함께 공부하려고 한다. function solution(arr) { var answer = 0; arr.forEach(item => { answer += item }); answer = answer/(arr.length); return answer; } Jav..

알고리즘/문제풀이 2021. 8. 24.
[프로그래머스] 위클리챌린지 1주차 - 부족한 금액 계산하기 Java
문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구의 이용 횟수 c..

Vue 2021. 8. 24.
[AG Grid] ag-grid 속성
Ag Grid 속성 rowSelection - 행 선택 유형 - 'single' : 단일 행 선택 - 'multiple' : 여러 행 선택 rowMultiSelectionWithClick - 'true'이면 여러 행을 선택할 수 있도록 선택 suppressRowClickSelection - 'true'이면 행 클릭 시 select 및 check가 되지 않음 suppressHorizontalScroll - 'false'이면 가로 스크롤바 표시 안함 - 행 크기가 자동 조절일 때 사용 Ag Grid 칼럼 속성 headerCheckboxSelection - 전체 체크박스가 가능한 헤더 체크박스 - 무한 스크롤에서는 해당 기능이 제공되지 않음 checkboxSelection - 각 행마다의 체크박스 - 무한 스..

알고리즘/문제풀이 2021. 8. 24.
[프로그래머스] 코딩테스트 연습 - 핸드폰 번호 가리기 Java
문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20 이하인 문자열입니다. 입출력 예 phone_number return "01033334444" "*******4444" "027778888" "*****8888" 나의 풀이 문자 길이를 파악하여 substring을 사용하여 문자를 자른 뒤 문자를 합칠 생각을 하였다. class Solution { public String solution(String phone_number) { Strin..

Java 2021. 8. 22.
1주차 - JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가
목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. JVM이란 무엇인가 Java Virtual Machine의 줄임말로 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다. 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해 많은 노력을 기울였지만 자바는 운영체제의 종류와 상관없이 실행할 수 있다. 그 이유는 자바가상머신(JVM)이다. 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바 애플리케이션은 JVM을 한번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석되기 때문에 속도가..
