철학하는 개발자

있는 것은 있고, 없는 것은 없다.

PS/Baekjoon Online Judge 711

[백준 13022] 늑대와 올바른 단어 [Java]

문제https://www.acmicpc.net/problem/13022 풀이주어진 문자열이 패턴 ‘wolf’으로 구성되는지 확인하는 문제다.문자열의 길이는 50이므로 길이가 4배수인 패턴을 미리 생성하고 비교하거나 replace해주는 방식도 있지만, 정직(?)하게 풀어보았다.우선 문자열의 시작은 ‘w’로 시작해야한다. static char[] ptn = "olf".toCharArray(); private static boolean check(char[] S) { int idx = 0, gap = 0; while (idx 그리고 ‘w’가 아닌 다른 문자가 나올 때 까지 연속된 ‘w’의 수를 세주자. while (idx 연속된 ‘w’의 수만큼 패턴 ‘o..

[백준 27370] 친구와 배달하기 [Java]

문제https://www.acmicpc.net/problem/27370 풀이$P_A$, $P_B$에서 N개의 목적지를 전부 방문했을 때, 이동거리 총합의 최솟값과 두 지점의 이동거리 차이의 최솟값을 구하는 문제다.우선 두 지점을 오름차순으로 교환해주고 if (Pa > Pb) { int temp = Pa; Pa = Pb; Pb = temp; }우선 이동거리 총합이 최소가 되야 하기 때문에 두 지점의 평균값을 기준으로 각 지점의 이동거리를 계산해준다. final int mid = (Pa + Pb) / 2; long A = 0, B = 0; ..

[백준 32344] 유물 발굴 [Java]

문제https://www.acmicpc.net/problem/32344 풀이유물들의 위치가 주어졌을 때 동일한 번호의 유물들을 감싸는 최대 크기의 직사각형을 구해야 한다.이중에서 가장 먼저 발굴하는 유물의 번호와 예상 크기를 구해야 한다.이를 위해서는 번호가 동일한 유물들의 위치에 대해 최소/최대값을 기록해야 한다. Arrays.fill(minRow, R + 1); Arrays.fill(minCol, C + 1); for (int i = 0; i 이후 반복문을 통해 최대 크기의 직사각형을 구해주고, 만약 유물의 번호가 작은 유물이 있다면 유물 번호를 변경하자. long resId = -1, resArea = -1; for (int id = 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..

[백준 05568] 카드 놓기 [Java]

문제https://www.acmicpc.net/problem/5568 풀이N개의 카드 중 K개를 골라서 만들어지는 숫자의 종류를 세는 문제다.고르는 순서에 따라 숫자가 달라지기 때문에 순열을 사용했다. for (int i = 0; i 만약 K개를 모두 골랐다면, 하나의 문자열로 합치고 집합에 추가하면 된다. private static void permutations(List permutation) { if (permutation.size() == K) { StringBuilder sb = new StringBuilder(); for (String num : permutation) { sb.append(num)..

[백준 26265] 멘토와 멘티 [Java]

문제https://www.acmicpc.net/problem/26265 풀이주어진 N개의 멘토-멘티 쌍에 대해 멘토를 기준으로 사전순정렬, 만약 동일하다면 멘티를 기준으로 역사전순 정렬하면 된다. // Solve list.sort((s1, s2) -> { int cmp = s1[0].compareTo(s2[0]); if (cmp == 0) { return -s1[1].compareTo(s2[1]); } return cmp; });소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-j..

[Official Learn Next.js] Learn ‘App Router’ - Chapter 2. CSS Styling

App Router: CSS Styling현재 프로젝트에는 아무런 스타일도 적용되지 않았습니다.이번 장에서는 Next.js에서 스타일을 지정하는 다양한 방법을 살펴보겠습니다.전역 CSS 파일 추가하기Tailwind와 CSS 모듈유틸리티 패키지 clsx를 사용해 조건부로 클래스 이름을 추가하는 방법전역 스타일프로젝트 내부의 /app/ui 폴더에 global.css 파일을 사용해 전역 CSS를 설정할 수 있습니다.⚠️global.css 는 최상위 구성 요소에 추가하는 것이 좋습니다./app/layout.tsx파일로 이동해 전역 스타일을 추가합니다.import '@/app/ui/global.css'; export default function RootLayout({ children,}: { children..

[백준 19564] 반복 [Java]

문제https://www.acmicpc.net/problem/19564 풀이어떤 키를 누르든 A ~ Z부터 한 번씩 주어지므로주어진 문자열 S를 만들기 위해서는 각 문자가 이전 문자보다 순서가 사전순으로 뒤에 위치할 때만 추가로 키를 눌러도 되지 않는다.만약 이전 문자와 동일한 문자, 또는 순서가 앞서는 문자가 나온다면 키를 한번 더 눌러서 A-Z를 얻어야 한다. // Solve int cnt = 1; for (int i = 1; i 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/19564.java