전체 글

전체 글

    [baekjoon 1374] 강의실 (그리디, 우선순위 큐) (C++)

    https://www.acmicpc.net/problem/1374 1374번: 강의실 첫째 줄에 강의의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 줄마다 세 개의 정수가 주어지는데, 순서대로 강의 번호, 강의 시작 시간, 강의 종료 시간을 의미한다. 강의 www.acmicpc.net 강의실의 이용 시작 시간, 종료 시간이 주어지고 이 예약 정보들을 감당하는 최소한의 강의실 개수를 구해야 한다. 처음엔, 누적 합처럼 모든 예약 시간을 배열에 저장한 다음에 겹치는 시간의 최대 개수를 구하려고 했지만 예약 시간의 범위가 10억이라서 불가능이라고 생각했다. 이 문제는 우선순위 큐를 이용해야 하는데, 이런 유형의 문제가 명확하게 생각하기 힘들어서 어렵다고 느껴진다. 1...

    [SpringBoot] Error - java.net.SocketTimeoutException at PlainSocketImpl

    상황 - CI 작업을 위해서 프로젝트에 github action을 연동하던 중 마주친 에러. - build 중 테스트가 돌아가면서 에러가 나버린다. - 프로젝트의 datasource는 RDS mysql database를 연결해둔 상태였다. 발생한 에러 ApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1804 Caused by: javax.p..

    [baekjoon 14888] 연산자 끼워넣기(브루트포스, 백트래킹) (C++)

    https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 연산자가 주어지고, 해당 연산자들을 이용해서 만들 수 있는 최댓값과 최솟값을 구하는 문제다. 어느 연산자를 배치해서 최댓값이 나올 것이고, 최솟값이 나올 것이고 계산을 하긴 힘들다. 그리고 N의 개수는 최대 11이고 연산자의 개수는 최대 10개이므로 모든 경우의 수를 돌려서 찾아야 하는 문제이다. 1. DFS + 백트래킹을 이용해서 모든 경우..

    [baekjoon 1939] 중량제한 (파라매트릭서치, BFS) (C++)

    https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 파라매트릭 서치와 BFS를 이용했던 문제로, 특정 무게를 버틸 수 있는 경로가 있는지 확인하는 문제였다. 고려해야 할 점은 다음과 같다. 1. 입력값으로 동일한 다리가 들어올 수 있다는 점 (1 2 4 / 1 2 7) 2. 가능한 중량의 최댓값을 골라야 하는데, 중량의 범위가 10억이라는 점 따라서, 중량 값을 먼저 정해두고 해당 중량 값..

    [baekjoon 16926] 배열 돌리기 1 (구현) (C++)

    [baekjoon 16926] 배열 돌리기 1 (구현) (C++)

    https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 구현 문제를 잘 못 푸는 나에게 어려웠던 문제이다. 기본적인 배열 돌리기도 힘들어하다니.. 연습이 시급하다. 생각해볼 포인트는 두 가지이다. 1. 구현의 영역인 배열의 값을 한 칸씩 반시계 방향으로 옮기기 2. 사각형 모양의 배열들이 독립적으로 회전해야 하는 것 이런 식으로, 외곽 배열과 내부 배열은 독..

    [SpringBoot] Error - Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

    상황 Spring Initializr을 통해서 MySQL 의존성을 추가한 상태 IndexController를 테스트용으로 만들고, 서버를 run 시켰더니 마주친 오류 Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you ..

    [프로그래머스 lv2] N개의 최소공배수 (최대공약수, 최소공배수) [C++]

    https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 처음엔 배열의 최댓값부터 1씩 증가하면서, 모든 원소와 최초로 나눠 떨어지는 수를 찾았다. 맞았지만, 데이터의 크기가 커지면 시간 초과가 날 수 있는 풀이였다. 다른 분들의 풀이를 보니, 최대공약수와 최소공배수를 구해서 풀었다. a와 b의 최소공배수를 구하는 것은 a와 b의 곱을 최대공약수로 나눈 것이기 때문에 배열의 ..

    [프로그래머스 월간 코드 챌린지 시즌 1] 이진 변환 반복하기 (구현, 계산) [C++]

    https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 단순한 문제이다. 주어진 이진수를 1. 이진수에서 0을 제외한다. - deleteZero 함수 (pair 로 변환한 이진수와 지운 0의 개수를 반환한다) 2. 나온 이진수 결과물의 길이를 다시 이진수로 만든다. - convert 함수 3. 위의 과정을 반복하면서 최종적으로 1이 나오면 종료한다. 여기서 진행하면서 변환 횟수와 지운 0의 개수를 세서 반환하면 된다. #include #include #include #include using namespace std; typedef pair psi; psi deleteZero(string..