"꾸준하고 완벽한 한 걸음"

math 57

[백준 01408] 24 [Java]

문제https://www.acmicpc.net/problem/1408 풀이두 시간대가 주어졌을 때 시간의 차를 계산하는 문제다.시작 시간과 종료 시간은 최대 48시간 차이가 날 수 있다. 이는 LocalTime.parse로 충분하다. // Input LocalTime start = LocalTime.parse(br.readLine()); LocalTime end = LocalTime.parse(br.readLine());시작 시간과 종료 시간의 차가 음수라면, 종료 시간은 시작 시간의 다음 날을 의미한다.24시간을 더한 후 올바른 차를 계산해서 출력하자. // Solve int totalSec = (int) Duration.between(st..

[백준 32184] 디미고에 가고 싶어! [Java]

문제https://www.acmicpc.net/problem/32184 풀이페이지 A ~ B를 전부 촬영한다고 할 때 최소 촬영 횟수를 구하는 문제다.A가 짝수이고, B가 홀수일 때, 양 끝을 분리해서 촬영해야 하므로 필요한 최소 촬영 횟수는 $\frac{B - A}{2} + 2$이다. 이 외에는 겹쳐서 촬영이 되기 때문에 $\frac{B-A}{2} + 1$이 된다. // Solve & Output if (A % 2 == 0 && B % 2 == 1) { System.out.println((B - A) / 2 + 2); } else { System.out.println((B - A) / 2 + 1); } }}소..

[백준 31067] 다오의 경주 대회 [Java]

문제https://www.acmicpc.net/problem/31067 풀이주어진 배열 A의 모든 요소가 서로 다른 오름차순 배열로 만들기 위한 최소 횟수를 구하는 문제다.오름차순을 만들기 위해 요소에 K만큼 더할 수 있다. // Solve int cnt = 0; for (int i = 0; i 만약 조건에 부합하는 배열을 만들 수 없다면 결과를 -1로 변경하고 탐색을 중단하자. } else { cnt = -1; break; } }소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-..

[백준 02139] 나는 너가 살아온 날을 알고 있다 [Java]

문제https://www.acmicpc.net/problem/2139 풀이주어진 일/월/연도에 대해 동일 연도의 1월 1일부터의 차를 구하면 된다.원래 문제 의도는 윤년에 따라 일수를 다르게 계산하는 문제지만, 이번에는 새롭게 풀어봤다.두 날짜 객체를 생성 후 날짜의 차를 구하는 메서드를 사용해서 풀이했다. LocalDate date1 = LocalDate.of(input[2], 1, 1); LocalDate date2 = LocalDate.of(input[2], input[1], input[0]); // Solve & Output System.out.println(ChronoUnit.DAYS.between(date1, dat..

[백준 11970] Fence Painting [Java]

문제https://www.acmicpc.net/problem/11970 풀이주어지는 A, B, C, D에 대해 A ~ B구간의 길이와 C ~ D구간의 길이를 구하는 문제다.만약 두 구간이 겹친다면, 중복되는 구간을 제외한 길이를 출력해야 한다.조건식으로 두 구간이 겹치치 않는다면 각 구간의 길이를, 겹친다면 두 구간의 전체 길이를 출력했다.System.out.println(C >= B || D 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/11970.java

[프로그래머스] 카펫 [Java]

문제https://school.programmers.co.kr/learn/courses/30/lessons/42842풀이brown은 중앙에 위치한 직사각형 yellow를 한 줄로 감싸야 한다.때문에 가로의 최대 길이는 (brown - 2) / 2가 된다.가로를 한 칸씩 줄일 때마다 중앙에 위치한 yellow의 높이는 1씩 증가한다.이 과정을 반복하며 만들어지는 테두리 내부에 모든 yellow를 저장할 수 있을 때 까지 탐색하면 된다.소스코드보기

PS 2025.02.21

[백준 22943] 수 [Java]

문제https://www.acmicpc.net/problem/22943 풀이0 ~ 9 중에서 서로 다른 K개를 골라 만들 수 있는 수 중 다음을 만족하는 수를 구해야 한다.서로 다른 두 개의 소수의 합으로 나타낼 수 있어야 하고,M으로 나누어 떨어지지 않을 때 까지 나눈 수가 두 개의 소수의 곱인 경우이어야 한다.구현할 부분이 많지만, 하나씩 해결해보자.0 ~ 9로 K자리 수 만들기우선 0 ~ 9 중 K개를 골라 수를 만들어야 한다.숫자를 한 번씩 만 사용해야 하고, 첫 번째는 0이 올 수 없다. private static void solve(int digit, int num) { if (digit == 0) { // base case } fo..

[백준 02436] 공약수 [Python]

문제https://www.acmicpc.net/problem/2436 풀이두 수 A, B의 GCD, LCM이 주어질 때, 두 수의 합이 최소가 되는 수를 구하는 문제다.이때 두 수의 범위 2 ~ 1억에 대해 GCD, LCM을 전부 구해 비교하는 방법은 시간 초과가 발생한다.탐색 범위를 좁혀보자.$G = GCD(A, B), L = LCM(A, B)$일 때, $AB = GL$, $A = Gx$, $B = Gy$이므로 $AB = G^2xy = GL, xy = \frac{L}{G} = K$가 성립한다.K의 모든 약수 쌍 중 $GCD(A, B) = G*GCD(x, y)$를 만족해야 하므로, $GCD(x, y) = 1$인 약수만 해당된다. K = LCM // GCD x, y = 0, 0 for d ..