목차 : 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 JVM이란 무엇인가 JVM은 자바 가상 머신(Java Virtual Machine)의 약자로 자바 바이트 코드(.class파일)을 OS에 특화된 코드로 변환(일반적으로, 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트 코드를 실행할 수 있도록 구현한다)하여 실행한다. JVM은 운영체제 마다 다르다. 윈도우에 특화된 JVM이 있고, Linux에 특화된 JVM이 있고, Mac OS에 특화된 JVM이 있을것이다. 하지만 자바의 바이트코드(.class파일)는 어떤 JVM에서나 다 동작을 하기 때문에, 표준 자바 API까지..
재귀(Recursion) 이란 무엇일까? 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. "재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어. "재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을... 출처 : namu.wiki/w/%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98 팩토리얼로 알아보는 재귀 알고리즘 먼저 팩토리얼 이란? 숫자 n이 주어졌을 때, n 부터 1까지의 곱의 결과를 뜻한다. 0! = 1 1! =..
www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 재귀의 기본적인 구현이라고 할 수 있는 팩토리얼 문제이다. 먼저 팩토리얼 이란? 숫자 n이 주어졌을 때, n 부터 1까지의 곱의 결과를 뜻한다. 0! = 1 1! = 1 2! = 2 x 1 3! = 3 x 2 x 1 .. n! = n x (n-1) x ... x 1 이것을 트리 형태로 만들면, 아래의 그림과 같다. 자 그럼 이제 점화식이 보인다. if (n==1) 일 경우 ∫(n) = 1; if (n==2) 일 경우 ∫(n) = 1; n은 0보다 큰 양의 정수이다. ∫(n)= n x ∫(n-1) 코드로 표현 해보자..
안녕하세요, 알고리즘을 정리하는 포스팅입니다. 다른 알고리즘을 참고하시려면 해당 카테고리를 이용해주세요. 😊 '🌻 JAVA/알고리즘, 자료구조' 카테고리의 글 목록 공부한 것들 정리한 내용을 포스팅합니다. iseunghan.tistory.com 분할 정복 (Merge Sort) Merge Sort, 분할 정복, 병합 정렬, 합병 정렬 이라고도 한다. 시간복잡도는 최악의 상황까지도 O(n log n)을 보장한다. 나는 이 알고리즘을 공부할때, 분할 정복이라고 배워서 분할 정복이라고 칭하겠다. 그렇다면 왜 분할 정복일까? Merge Sort가 O(n logn)을 보장할 수 있었던 이유는 정렬 할 배열을 반으로 분할 한뒤 각각 정렬 시키고 합치기 때문에 속도가 빠르다고 할 수 있다. (아래의 이미지를 보자) ..
안녕하세요, 알고리즘을 정리하는 포스팅입니다. 다른 알고리즘을 참고하시려면 해당 카테고리를 이용해주세요. 😊 '🌻 JAVA/알고리즘, 자료구조' 카테고리의 글 목록 공부한 것들 정리한 내용을 포스팅합니다. iseunghan.tistory.com 계수 정렬 (Counting Sort) 카운팅 정렬은 시간복잡도가 𝚶(𝑛) 으로 속도가 빠른 알고리즘이다. 퀵 정렬(Quick Sort), 합병 정렬(Merge Sort) 의 평균 시간복잡도는 𝚶(nlogn) 인데 카운팅 정렬은 시간복잡도가 𝚶(𝑛) 으로 속도가 아주 우수한 알고리즘이다. 카운팅 정렬을 코드로 하나하나 뜯어서 보자. 먼저, 배열은 세가지를 선언 해준다. int[] array = new int[100]; //수열의 원소 : 100개 int[] cou..
www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 🚀문제 💬 예제 입력 5 5 4 3 2 1 💬 예제 출력 1 2 3 4 5 🌈 나의 풀이 문제를 보고 당연히 Arrays.sort() 를 사용하려 했지만,, 시간 초과. 퀵 정렬은 평균 시간 복잡도가 O(nlogn) 이지만, 최악의 경우 O(n2) 까지 될 수도 있다. 일부러 퀵 정렬을 못쓰게 하려고 한 데이터가 있는 것 같다. ( 그럼 다른거 쓰면 되지🙃) Merge Sort 사용 X Counti..