Language/JAVA 53

#JVM(Java Virtual Machine)

JVM : 자바 가상 머신 가상머신 : 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것 자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있다. 자바 프로그램을 실행하기 위해서는 반드시 자바 가상 머신이 설치되어 있어야 한다. 자바 프로그램과 달리 JVM은 운영체제에 종속적이므로, 각 운영체제에 맞는 자바 가상 머신을 설치해야 한다. 자바 가상 머신이라는 한 단계를 거쳐야 하므로, 상대적으로 실행 속도가 느리다는 단점을 가지고 있다. 구성 자바 인터프리터(interpreter) : 자바 컴파일러에 의해 변환된 자바 바이트 코드를 일고 해석하는 역할. 클래스 로더(class loader) : 동적으로 클래스를 로딩해줌. 자바는 동적으로 클래스를 읽어오므로, 프로그램..

Language/JAVA 2022.01.24

[프로그래머스] 소수 찾기

https://programmers.co.kr/learn/courses/30/lessons/12921 import java.util.Arrays; class Solution { public int solution(int n) { //n+1개의 배열을 만들기 boolean[] arr = new boolean[n+1]; //초기화 : 모든 값을 true로 입력 Arrays.fill(arr, true); //0과 1은 소수가 아니니 제외 arr[0] = arr[1] = false; //2부터 시작 //아래 for문에서 배수에 해당하는 수는 모두 지울 것이므로 횟수 제한 for (int i = 2; i*i

Language/JAVA 2022.01.21

[프로그래머스] 모의고사

https://programmers.co.kr/learn/courses/30/lessons/42840#qna import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] answers) { //수포자별로 배열을 만들기 //찍는 방식을 배열로 생성 int[] p1a = new int[]{1, 2, 3, 4, 5}; int[] p2a = new int[]{2, 1, 2, 3, 2, 4, 2, 5}; int[] p3a = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int[] p1 = new int[answers.length];..

Language/JAVA 2022.01.20

[프로그래머스] 같은 숫자는 싫어

https://programmers.co.kr/learn/courses/30/lessons/12906 import java.util.*; public class Solution { public int[] solution(int []arr) { //add 사용, 답안 배열의 길이를 모르기 때문에 ArrayList사용 List num = new ArrayList(); num.add(arr[0]); //num 배열의 index 선언 int k = 0; for (int x : arr) { if(!num.get(k).equals(x)) { num.add(x); k++; } } // for (int i = 0; i < arr.length; i++) { // if(!num.get(k).equals(arr[i])) {..

Language/JAVA 2022.01.20

#Stream

Stream의 특징 원본의 데이터를 변경하지 않는다. Stream arrString = arr.stream();과 같이 별도의 복사본을 만든다. 일회용이다 : 한번 사용이 끝난 후 Stream이 또 필요한 경우에는 Stream을 다시 생성해야 한다. 내부 반복으로 작업을 처리하기 때문에 간결한 코드 작성이 가능하다. 함수형 인터페이스와 람다식 Stream은 매개변수로 함수형 인터페이스를 받음. 람다식은 반환값으로 함수형 인터페이스를 반환 → Stream의 매개변수로 전달 가능 람다식 : 함수형 인터페이스의 인스턴트를 생성하여 함수를 변수처럼 선언 Stream의 연산 종류 1. 생성하기 Stream객체를 생성하는 단계 Stream은 재사용이 불가능하므로, 닫히면 다시 생성해주어야 한다. 배열, 컬렉션, 임..

Language/JAVA 2022.01.19

[프로그래머스] 최소직사각형

https://programmers.co.kr/learn/courses/30/lessons/86491 이중배열 문제이다. 이중배열에서 원하는 값을 어떻게 꺼낼지, max를 어떻게 구할지에서 많이 헤맸다. 명함의 크기를 조정한다는 부분을 처음에 엄청 복잡하게 생각했었는데, 가로가 세로보다 큰 값으로 모두 통일하면 간단히 해결할 수 있는 문제였다. class Solution { public int solution(int[][] sizes) { //가로 세로 중 가로에 큰 값이 오도록 조정 for (int i = 0; i < sizes.length; i++) { if (sizes[i][0] < sizes[i][1]) { int a = sizes[i][0]; int b = sizes[i][1]; sizes[i]..

Language/JAVA 2022.01.19

[프로그래머스] 3진법 뒤집기

import java.util.ArrayList; import java.util.List; class Solution { public int solution(int n) { int answer = 0; List number = new ArrayList(); //3진법으로 변환 + 뒤집을 거라서 0부터 넣어도 됨 while (n > 0) { number.add(n % 3); n = n/3; } //다시 10진법으로 변환 for (int j = 0; j < number.size(); j++) { answer += number.get(j) * Math.pow(3, number.size()-1-j); } return answer; } } 뒤집는다는 부분때문에 처음에 List배열을 만들어서 add를 사용하였는데 ..

Language/JAVA 2022.01.19