[Java] 자바 메모리 구조
·
Back-end/Java
❗해당 포스팅은 인프런에서 제공해 주는 강의 내용을 개인적으로 정리하였음을 알려드립니다. 김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문www.inflearn.com자바 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나뉜다.메서드 영역: 클래스 정보 보관.스택 영역: 실제 프로그램 실행 영역으로 메서드 실행 시 하나씩 쌓이는 공간.힙 영역: 객체(인스턴스)가 생성되는 영역으로 new 명령어를 사용하면 이 영역을 사용함. 배열도 이 영역을 사용. 스택영역의 예시를 보자package memo..
[Algorithm] 프로그래머스_체육복(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krreverse와 lost를 정렬한다. answer의 초기값을 n-lost.length로 설정한다. 이중 포문을 사용하여 reverse와 lost가 겹치는 학생 번호가 있다면 해당 배열에 -1을 대입한다. 이후 reverse+1 또는 reverse-1이 lost에 존재한다면 answer++를 해주고 lost와 reserve에 -1을 대입한다. import java.util.*;class Solution { public int solution(..
[Algorithm] 프로그래머스_완주하지 못한 선수(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krhashMap을 사용하여 participant 배열의 선수들을 key값으로 넣고 value에 해당 선수가 몇명인지 넣는다. 그 후 completion배열의 선수들에 대해 value값을 -1 해준다. 결과적으로 value값이 0이 아닌 선수를 return해준다. hashMap의 getOrDefault메서드를 사용하여 코드의 가독성을 높일 수 있다. getOrDefault(key, defaultValue) => key가 존재하면 기존 value값을,..
[Algorithm] 프로그래머스_네트워크(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 이해 잘못해서 시간을 꽤 쓴 문제다. 처음엔 2차원 방문 배열이 필요하다고 생각했는데,각 컴퓨터의 방문 여부만 체크하면 되므로 1차원 배열으로도 충분함을 깨달았다. 0~n번까지의 컴퓨터가 있다면0번 컴퓨터부터 큐에 넣고 0번과 연결되어 있는 컴퓨터를 찾는다.그 컴퓨터를 큐에 넣는다.위 과정을 반복하는 로직을 구현하면 된다~ 이때, 0-1, 0-3, 3-2 가 연결되어 있다면 하나의 네트워크이다.computers : [[1, 1, 0, 1],..
[Algorithm] 프로그래머스_K번째수(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제를 따라가며 구현하면 어렵지않은 문제!배열을 자르고 정렬하고 뽑아내면 됐다.. import java.util.*;class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i = 0; i  여기서 더 최적화하려면 Arrays.copyOfRange() 메서드를..
[Algorithm] 프로그래머스_올바른 괄호(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제는 스택을 사용하여")" 문자가 나오면 "(" 문자를 스택에서 꺼내는 방식으로 접근한다. 그림을 그려보면 이해가 쉽다.문자를 다 꺼낸 후에도 스택에 남아있다면 짝이 맞지 않는 문자열만 남았으므로 false가 된다. 추가로 아래 두 가지 경우도 false가 된다.1.")"를 꺼냈는데 스택이 비어 있는 경우2. ")"를 꺼낸 후 다음 문자열이 "("이 아닌 경우 위 내용을 토대로 구현한 코드는 아래와 같다.import java.util.*;c..
[Algorithm] 프로그래머스_타겟넘버(JAVA)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제는 모든 경우의 수를 생각해야 하므로 dfs 알고리즘을 사용한다. 이런 그림을 그려가며 접근을 했고 sum = 0 + numbers[0] + numbers[1] ...numbers[idx]sum = 0 - numbers[0] + numbers[1] ...numbers[idx]...idx값이 주어지는 배열 길이가 되었을때 재귀문을 빠져나온다. 이때 sum이 target값과 같다면 answer 값을 +1 해준다. 위 내용을 토대로 구현한 코..
[Algorithm] 프로그래머스_특이한 정렬(JAVA), 우선순위 큐, Comparator
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/120880 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제의 접근은 n과 배열의 차이값을 구하자는 아이디어로부터 시작됐다.[-3, -2, -1, 0, 1, 2] 이런 식으로 차이값이 들어있는 배열을 생성할 수 있을 것이다.이후 우선순위 큐가 생각났고, 절대값으로 우선순위를 매기되 같은 값이면 양수가 우선순위가 되도록 설정하였다. 여기서 Comparator 반환값에 대해 맨날 헷갈려서 정리하려고 한다.PriorityQueue는 내부적으로 Comparator 인터페이스를 사용하고Comparator..
[Algorithm] 프로그래머스_겹치는 선분의 길이(Java)
·
Algorithm
https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr처음 이 문제를 보고 케이스를 나눠서 풀어야 되나.. 생각이 많았던 문제다.일정한 규칙이 보이는 문제도 아니고! ㅠ 결국 구글링 해서 알아낸 힌트는 선분의 길이가 아닌 점이 지나는 곳에 집중한다는 것이다.-100 ~ 100까지의 범위니까 200개의 숫자를 담을 수 있는 배열을 만들고, 지나는 점을 모두 카운트하는 것이다.그리고 점이 두 번이상 겹치는 것의 개수를 구하면 답이 나온다! class Solution { public int sol..
[Java] 기본형과 참조형
·
Back-end/Java
❗해당 포스팅은 인프런에서 제공해 주는 강의 내용을 개인적으로 정리하였음을 알려드립니다. 김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문www.inflearn.com자바는 항상 변수의 값을 복사해서 대입한다. 기본형 = 변수에 값이 들어감 (소문자로 시작하는 것들, int, long, double 등..)참조형 = 변수에 참조(주소)가 들어감 (객체, 배열 등.. String도 참조형임) 기본형이면 변수에 들어있는 실제 사용하는 값을 복사해서 대입하고참조형이면 변수에 들어 있는 참조값을 복사해서 대입한다..