분류 전체보기 70

[BOJ] 2512 예산 (Java)

https://www.acmicpc.net/problem/2512 이 문제의 경우 예산액의 범위가 1 이상 100,000 이하여서 굳이 이분탐색이진 않아도 될 거 같긴 하다만, 이분탐색으로 풀었음.지방 예산액과 총 예산액이 주어졌을 때, 해당 총 예산액을 만족하는 최대 예산 상한액을 구하는 문제.그렇다면 이 최대 예산 상한액을 m으로 두고 1 ~ 최대 지방 예산액 사이에서 조건을 만족하는 m 값을 구하면 된다.조건을 만족하는 지 확인하는 코드는 다음과 같다. // 총 예산 계산int sum = 0;// 모든 지방의 예산의 예산 상한액보다 작을 경우 idx의 default값은 n이어야 함int idx = n;// 1. 현재 예산 상한액(m) 보다 작은 지방 예산의 합 = arr[i]원for(int i=0;..

코테/백준 2024.10.29

99클럽 코테 스터디 2일차 TIL 이분탐색(징검다리)

https://www.acmicpc.net/problem/11561   처음에 이분탐색이라는 아이디어를 떠올리는 게 어려운 문제였다,,근데 자세히 보면 N의 범위로 보아 선형탐색은 절대 아니고, 두 번째 점프부터 이전 점프 + 1 긴 거리를 점프한다는 점에서 등차수열을 떠올릴 수 있다.그리고 최대 수이니 결국은 무조건 다음 식을 만족한다. => 다음 점프 = (이전 점프 + 1)그렇다면, 몇 개의 징검다리를 건넜을 때가 최대 징검다리가 될 까? 이 징검다리 수를 m으로 두고 이분탐색을 통해 조건을 만족하는 최대 m 값을 구하면 된다.그리고 조건은, m * (m + 1) / 2기 N의 값에 가장 가까우면 된다. (등차수열의 합 공식 사용)주의점은 N의 최대 범위를 고려하여 자료형을 long으로 사용해야 한..

코테/백준 2024.10.29

[BOJ] 2776 암기왕 (Java)

https://www.acmicpc.net/problem/2776 앞선 문제에 이어 골라본 이분탐색 문제.자신 있게 풀다가 잊고있던 StringBuilder의 위력을 다시금 일깨워주었다,, package BOJ;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class BOJ_2776 { static int T; static int n, m; static int[] arr; static StringBuilder sb; public static void b..

코테/백준 2024.10.28

99클럽 코테 스터디 1일차 TIL 이분탐색(게임)

https://www.acmicpc.net/problem/1072 승률이 달라지기위한 게임 횟수를 구하는 문제였다.처음엔 1부터 탐색했는데 생각해보니 X의 범위를 고려했을 때 최악의 경우 10억까지 탐색해야 했다. O(N)따라서 이분탐색으로 풀어야 하는 문제였다. O(logN) package STUDY;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Day01_BOJ_1072 { static int x, y; static int res; public static void main(String[] ..

코테/백준 2024.10.28

[프로그래머스] 주차 요금 계산 (Java)

[2022 KAKAO BLIND RECRUITMENT]문제 설명주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다.요금표입/출차 기록자동차별 주차 요금어떤 차량이 입차된 후에 출차된 내역이 없다면, 23:59에 출차된 것으로 간주합니다.0000번 차량은 18:59에 입차된 이후, 출차된 내역이 없습니다. 따라서, 23:59에 출차된 것으로 간주합니다.00:00부터 23:59까지의 입/출차 내역을 바탕으로 차량별 누적 주차 시간을 계산하여 요금을 일괄로 정산합니다.누적 주차 시간이 기본 시간이하라면, 기본 요금을 청구합니다.누적 주차 시간이 기본 시간을 초과하면, 기본 요금에 더해서, 초과한 시간에 대해서 단위..

[Spring] 스프링 특징 IOC, AOP, DI 이란?

Spring Framework의 주요 특징 IOC, AOP, DI 1. IOC (Inversion of Control) : 제어의 역전Spring 컨테이너가 개발자 대신 의존성을 주입하고 객체의 생명주기를 관리하도록 하여 객체의 흐름을 관리 자바 기반 어플리케이션 개발시, 객체의 생성부터 소멸까지 및 의존 관계와 같은 흐름을 조작하고 결정하는 것은 개발자에게 있다. 하지만, IOC 패턴 사용시 객체의 생성 및 관리 등 제어 흐름의 결정 권한을 Spring 컨테이너에게 위임하여 객체의 라이프사이클을 관리하는 것을 말한다. Container가 bean을 관리해주기에 제어의 역전이라고 한다.IOC의 장점객체 간의 결합도를 낮춤유연한 코드 작성테스트의 용이성을 향상2. AOP (Aspect Oriented Pr..

Back-End/Spring 2023.12.14

[프로그래머스] 메뉴 리뉴얼 (Java)

[2021 KAKAO BLIND RECRUITMENT]문제 설명레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다.기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다.단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다.예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면..

[프로그래머스] 두 큐 합 같게 만들기 (Java)

[2022 KAKAO TECH INTERNSHIP]문제설명길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다.큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 예를 들어 큐 [1, 2, 3, 4]가 주어졌을 때, pop을 하면 맨..

[Java] 가비지 컬렉션(Garbage Collection, GC)이란?

1. 가비지 컬렉션의 개념 - 자바가 실행되는 JVM 에서 사용되는 객체, 즉 Heap 영역의 객체를 관리해 주는 기능을 말한다. - 유효하지 않은 메모리인 가비지(Garbage)가 발생했을 때, JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. - 이때, Stop The World와 Mark and Sweep 과정이 일어난다. 2. 가비지 컬렉션의 동작 방식 JVM의 Heap 영역은 Young(새로운 객체들이 할당되는 영역)과 Old(Young에서 오래 살아남은 객체들이 존재하는 영역) 2가지 영역으로 나뉘는데, GC가 실행되면 일반적으로 다음과 같은 단계를 따른다. 1. Stop The World 가비지 컬렉션을 실행하기 위해 JVM이 애플리케이션의 실행을 멈춘다. GC를 실행하는 쓰레드..

Back-End/Java 2023.12.12

[프로그래머스] k진수에서 소수 개수 구하기 (Java)

[2022 KAKAO BLIND RECRUITMENT 기출]문제설명양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다.0P0처럼 소수 양쪽에 0이 있는 경우P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우P처럼 소수 양쪽에 아무것도 없는 경우단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.예를 들어, 101은 P가 될 수 없습니다.예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, ..