STUDY/JAVA

    [TIL] 프로그래머스 - 상담원 인원(첫 lv.3 도전)

    [TIL] 프로그래머스 - 상담원 인원(첫 lv.3 도전)

    프로그래머스 2023 현대모비스 알고리즘 경진대회 예선 lv.3 - 상담원 인원 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 전체 문제 로직 2. 코드 public int solution(int k, int n, int[][] reqs) { // 각 유형마다 멘토가 배치됨에 따라서 대기시간이 어떻게 되는지 구한다. int[][] waitingTime = new int[n - k + 1][k]; // i명 배치할 때, 각 유형의 기다리는 시간 구하기 for (int i = 0; i < n - k + 1; i++) { // mentos : i+1명의 ..

    [TIL] 프로그래머스 - 같은 숫자는 싫어 (GPT 첫 개시!)

    문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..

    [TIL] java.lang.IllegalStateException 해결하기

    영속성 컨텍스트의 기능 중 1차 캐시 저장을 Test해보려고 했는데, 객체를 데이터베이스에 저장하려는 과정 중 java.lang.IllegalStateException: Cannot get a connection as the driver manager is not properly initialized 오류 발생. 뭐가 문젠지 몰라서 일단 파일을 엎고 다시 만들었는데, 연결되어 있어야 할 데이터베이스가 없어져 있었다. 아까 table을 드롭한다는게 database를 drop을 해서 객체를 데이터베이스에 저장하려고 하니까 오류가 난 것 같았다. 데이터베이스를 다시 create 해준 뒤, 같은 코드로 실행시켰더니 멀쩡히 잘 실행이 되었다. 진작에 알았으면 안 엎었지... ㅠ0ㅜ...

    [TIL] 피보나치 수열 구하기 - 메모이제이션

    재귀 함수를 공부해보자. 스터디에서 프로그래머스 최대공약수 최소공배수를 구하는 문제를 같이 풀었는데, 다른 사람의 풀이에 유클리드 호제법을 과, 재귀함수를 이용하여 최대공약수를 구하는 풀이가 나와있었다. 재귀함수에 대해서 발표를 해야겠다는 생각이 들어 공부해보기 시작했다. 피보나치 수열을 재귀함수를 이용해 구해보자. 재귀함수를 이용하는 대표적인 문제는 피보나치 수열을 구하는 것이 있었다. 점화식 a (n) = a (n-1) + a (n-2) 에 따라서 다음과 같이 간단하게 구할 수 있었다. public int fibonacci(int nth) { switch (nth) { case 0: return 0; case 1: return 1; } return fibonacci(nth - 1) + fibonacc..

    [TIL] 프로그래머스 lv.2 다음 큰 숫자 (비트연산자)

    문제 문제 설명 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 나의 풀이 풀이 로직 String을 매개변수로 받아 1의 개수를 세어 int로 return하는 메서드 countOneOfStr을 만든다. int..

    [TIL] 예외 되던지기(Exception re-throwing)는 언제 사용될까?

    예외 되던지기란? 예외를 처리한 후에 인위적으로 다시 발생시키는 방법 예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 예외 되던지기의 예시 1. BadInputException 클래스를 하나 만들어준다. public class BadInputException extends Exception { BadInputException() { super("잘못된 값을 입력하셨습니다."); } } 2. InputMismatchException이 발생하면 BadInputException을 던지도록 한다. import java.util.InputMismatchException; import j..

    [TIL] ConcurrentModificationException

    ConcurrentModificationException linkedList를 이용하여 다음 코드와 같이 문제를 풀어보려고 했는데 ConcurrentModificationException이 발생했다. public static void main(String[] args) { LinkedList linkedList = new LinkedList(); Iterator it = linkedList.iterator(); for (int i = 1; i

    [TIL] < 자바의 정석 > 예제 HighLow - 예외처리해보기

    오늘은 예제 부분을 다 공부 했으므로 거의 마지막이었던 HighLow 문제 예외처리해보기를 기록해보려고 한다. 예제 8-7. 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라. 1과 100사이의 값을 입력하세요 :50 더 작은 수를 입력하세요 1과 100사이의 값을 입력하세요 :asdf Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.ne..

    [TIL] printStackTrace()는 왜 아래에 찍힐까?

    > printStackTrace()는 왜 아래에 찍힐까? printStackTrace()의 구현은 어떻게 되어 있을까? err 출력 스트림? printStackTrace()의 취약점 printStackTrace()는 왜 아래에 찍힐까 예제 8-5를 배우고 있었다. 코드는 다음과 같았다. public class Ex8_5 { public static void main( String[] args ) { System.out.println( 1 ); System.out.println( 2 ); try { System.out.println( 3 ); System.out.println( 0 / 0 ); System.out.println( 4 ); } catch ( ArithmeticExcepti..

    [TIL] Getter와 Setter. 왜 쓸까?

    > Getter와 Setter에 대한 내 과거의 생각 Getter와 Setter를 쓰는 이유 Getter와 Setter에 대한 내 과거의 생각 자바로 키오스크를 구현했을 때나, 호텔 예약 프로그램을 구현했을 때나 드는 생각이 있었다. 왜 Getter와 Setter를 쓰는 것인가. 내가 헷갈린 이유는 이렇다. 아래 코드를 보자. name, company를 필드로 가지는 Car 클래스가 있다. public class Car { String name; String company; public Car( String name, String company ) { this.name = name; this.company = company; } public String getName() { return name; } }..