본문 바로가기

전체 글108

프로그래머스: 이중 우선순위 큐 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 오름차순으로 정렬되는 우선순위 큐와 내림차순으로 정렬되는 우선순위 큐를 생성한다. PriorityQueue queue = new PriorityQueue(); PriorityQueue maxPq = new PriorityQueue(Collections.reverseOrder()); 입력으로 들어오는 operation을 공백 기준으로 나눈다. 만약 입력이라면 queue와 MaxPq에 모두 값을.. 2023. 10. 10.
프로그래머스: 덧칠하기 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 나의 풀이 방법 다시 칠하기로 정한 section 배열의 값을 돌면서 이동한다. 시작점은 section의 0번째 index부터 시작해서 롤러의 길이만큼 이동하면서 방문 표시한다. 사이클을 한번 돌면 answer를 1증가한다. 이 다음 사이클에서는 section의 1번째 index가 시작점이 된다. 만약 방문했다면 넘어간다. => 즉, section 배열에 있는 값을 확인하기 위해 visit.. 2023. 10. 7.
프로그래머스. 프로세스 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음에는 프로세스의 index와 우선순위를 모두 가지고 있어야 한다고 생각해서, arraylist를 사용하려고 했다. 하지만 우선순위 큐(원소를 넣으면 value로 정렬되는 큐)를 사용하면 프로세스를 우선순위에 따라 쉽게 다룰 수 있다. 내부에 for문을 선언하여 priorities를 순차적으로 탐색한다. 현재 큐 제일 앞에 위치한 우선순위와 priorities에 담긴 우선순위를 비교하고, .. 2023. 10. 6.
프로그래머스. H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 인용횟수 배열을 오름차순으로 정렬한다. 배열 요소값을 h로 지정하여 H-Index 조건을 확인한다. h회 이상 인용된 논문 개수: 오름차순으로 정렬했을 때, 해당 요소에서 마지막 요소까지의 원소 개수를 말한다 [0, 1, 3, 5, 6] 으로 정렬된 배열에서 살펴보자. 코드 import java.util.*; class Soluction { public int solution(int[] ci.. 2023. 10. 2.
프로그래머스. 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음 이 문제를 풀이했을 때 배열 비교를 이용해서 풀이했는데, 해시맵 두 개를 활용하여 간단하게 풀이하는 방법도 있어 작성한다. 해시맵 map을 선언하여 want와 number 배열에서 목표하는 할인 정보(제품명, 수량)을 저장한다. (discount 배열을 탐색하여)에서 시작일마다 dMap을 선언해 10일간의 한일 정보를 저장한다. 생성된 dMap과 map을 비교하여, 수량이 다르면 is.. 2023. 10. 2.
P10844. 쉬운 계단수 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 설명 Long[][] dp = new Long[N+1][10]; // N 자릿수(마지막 자릿수)에서 (0~9)의 자릿값 자릿수가 0이라면 -> 이전 자릿수는 1만 가능하다. 자릿수가 9라면 -> 이전 자릿수는 8만 가능하다. 자릿수가 0, 9가 모두 아니라면 -> 이전 자릿수에서 -1 또는 +1한 것이 모두 가능하다. 코드 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.. 2023. 9. 26.
[Java] Garbage Collection(가비지 컬렉션)의 개념 및 동작 원리, GC 알고리즘, G1 GC Garbage Collection(가비지 컬렉션)이란? C언어에서는 malloc() 함수로 할당한 메모리를 사용하지 않을 때, 개발자가 직접 free() 함수로 해제한다. Java는 개발자가 메모리를 직접 해제해 주는 경우가 없다. 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 정리해 주기 때문이다. 이번 글에서는 가비지 컬렉션의 개념과 동작 원리, Java9 이후 기본 GC 알고리즘인 G1 GC에 대해 알아보자. 먼저 가비지(Garbage)는 유효하지 않은 메모리로, 더 이상 참조되지 않아 사용하지 않은 메모리이다. 이때 가비지 컬렉션(Garbage Collection, gc라고도 한다)는 메모리 누수를 방지하기 위해 주기적으로 메모리를 청소한다. 그럼 메모리는 언제 점유되고, Garbage는 .. 2023. 9. 22.
SQL 기본 문법 정리 프로그래머스 SQL 고득점 Kit으로 공부한 내용들을 정리합니다. SUM, MAX, MIN COUNT 데이터의 개수를 셀 때 사용한다. SELECT COUNT(NAME) FROM table; 중복되지 않은 이름 데이터 개수를 센다면 DISTINCT를 사용한다. SELECT COUNT(DISTINCT NAME) FROM table; 문제 풀이 가격이 제일 비싼 식품의 정보 출력하기 SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) PRICE FROM FOOD_PRODUCT); SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) PRICE FROM FOOD_PRODUCT); SELECT * FRO.. 2023. 9. 20.
Builder 패턴이란? 객체를 생성하는 방법에는 생성자 패턴, 정적 팩토리 메서드 패턴, 수정자 패턴, 빌더 패턴이 있다. Builder 패턴은 무엇이고 어떤 특징이 있을까? 왜 @Builder 패턴을 사용할까? Effective Java 아이템2를 살펴보면, "생성자에 매개변수가 많다면 빌더를 고려하라."를 확인할 수 있다. 정적 팩터리와 생성자 방식은 매개변수가 다양하면 대응이 어렵다는 단점이 있다. 이를 해결하기 위해 1) 점층적 생성자 패턴을 사용할 수 있다. public class User { private final String name;// 필수 private final int age;// 선택1 private final String gender;// 선택2 // 필수 생성자만 필요한 경우 public User(S.. 2023. 9. 20.