철학하는 개발자

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

PS 340

[백준 28447] 마라탕 재료 고르기 [Java]

문제28447번: 마라탕 재료 고르기 28447번: 마라탕 재료 고르기 boj.ma 풀이N개 중 K개의 재료를 고르고, K개의 재료들에 대한 맛 궁합을 합한 최댓값을 구하는 문제다.우선 N개중 K개를 고르는 조합combination을 만들자 private static void combination(int idx, int depth) { if (depth == K) { res = Math.max(res, subCombination(0, 0, new int[2])); return; } for (int i = idx; i 이제 K개중 2개를 고르는 조합 subCombination을 구현하자. 2개를 골랐다면, 재료의 궁합을 다 ..

[백준 04900] 7 더하기 [Java]

문제4900번: 7 더하기 4900번: 7 더하기 boj.ma 풀이7세그먼트 코드를 10진수로 표현한 A, B가 주어졌을 때, A, B의 합 C를 다시 7세그먼트 코드로 표현하는 문제다.우선 7세그먼트 코드에 대응하는 10진수들을 매핑해주자. HashMap map = new HashMap(); map.put("063", "0"); map.put("0", "063"); map.put("010", "1"); map.put("1", "010"); map.put("093", "2"); map.put("2", "093"); map.put("079", "3"); map.put("3", "079"); ..

[백준 23351] 물 주기 [Java]

문제23351번: 물 주기 23351번: 물 주기 boj.ma 풀이첫 캣닢이 죽는 날짜를 최대한 미루도록 물을 주는 문제다.이를 위해서는 남은 수분이 적은 캣닢에게 물을 주는 것이 최선이다.따라서 오름차순으로 정렬 후 K개의 캣닢에게 B-1만큼 물을 주고, 물을 주지않은 나머지 캣닢들은 1씩 감소시키면 된다. Arrays.sort(arr); while (isValid(arr)) { for (int i = 0; i 이후에는 다시 수분이 적은 순대로 정렬 후 날짜를 늘려주자. Arrays.sort(arr); ++day; }풀이 시간5분소스코드https://github.com/rogi-rogi/problem-sol..

[백준 09253] 스페셜 저지 [Java]

문제9253번: 스페셜 저지 9253번: 스페셜 저지 boj.ma 풀이두 문자열 A, B에 C가 있는지 확인하는 문제로 특정 언어에서 쉬운 문제다.Java의 경우 11과 15로 제출 시 시간 초과가 발생한다.Java 8에서 String.contains로 쉽게 풀이할 수 있다.import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String A = br.readLine(); String B = br.readLine(..

[백준 28125] 2023 아주머학교 프로그래딩 정시머힌 [Java]

문제28125번: 2023 아주머학교 프로그래딩 정시머힌 28125번: 2023 아주머학교 프로그래딩 정시머힌 boj.ma 풀이주어진 문자열에 대해 규칙대로 철자를 바꾸는 문제다.철자를 바꾼 횟수가 철자를 바꿔 만들어진 문자열 길이의 절반보다 크다면, 해석을 포기한다.우선 문제에서 주어진 철자 변환 규칙을 맵에 등록했다. 선택사항이다. // Input int T = Integer.parseInt(br.readLine()); HashMap map = new HashMap(); map.put('@', 'a'); map.put('[', 'c'); map.put('!', 'i'); map.put(';', 'j'); ..

[백준 06219] 소수의 자격 [Java]

문제6219번: 소수의 자격 6219번: 소수의 자격 boj.ma 풀이주어진 A와 B 사이의 소수 중 각 자릿수에 D를 포함하는 소수가 몇개인지 구하는 문제다.우선 B까지 존재하는 소수를 에라토스테네스의 체로 구해주자. private static List getPrimeList(int a, int b) { boolean[] isPrime = new boolean[b + 1]; Arrays.fill(isPrime, true); isPrime[0] = isPrime[1] = false; final int sqrtN = (int) Math.sqrt(b); for (int i = 2; i primeList = new ArrayList(); ..

[백준 21734] SMUPC의 등장 [Java]

문제21734번: SMUPC의 등장 21734번: SMUPC의 등장 boj.ma 풀이주어진 문자열의 각 문자에 대한 아스키코드의 각 자릿수의 합 만큼 문자를 출력하는 문제다.우선 각 자릿수의 합을 구하자. // Solve for (char c : S) { int loop = 0; int ASCII = c; while (ASCII > 0) { loop += ASCII % 10; ASCII /= 10; }이후 합 만큼 동일한 문자를 출력하면 된다. for (int i = 0; i 풀이 시간5분소스코드https://github.com/..

[백준 26148] 세로 달력 [Java]

문제26148번: 세로 달력 26148번: 세로 달력 boj.ma 풀이주어진 연도가 윤년인지 판별하는 문제다. // Solve int res = ((N % 4 == 0 && N % 100 != 0) || N % 400 == 0) ? 30 : 29;풀이 시간1분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/26148.java problem-solving/baekjoon-online-judge/practice/26148.java at main · rogi-rogi/problem-solvingDaily Problem Solving Challenges. Contribute ..

[백준 01940] 주몽 [Java]

문제1940번: 주몽 1940번: 주몽 boj.ma 풀이두 재료를 모아 M개 필요한 값옷을 몇 개 만들 수 있는지 계산하는 문제다.우선 재료들을 정렬하자. // Solve Arrays.sort(A);왼쪽과 오른쪽에 투포인터를 두고, 두 재료가 M이 되는지 확인하면 된다. while (l 풀이 시간5분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/01940.java problem-solving/baekjoon-online-judge/easy/01940.java at main · rogi-rogi/problem-solvingDaily Problem Solving C..

[백준 12841] 정보대 등산 [Java]

문제https://boj.ma/12841 12841번: 정보대 등산 boj.ma 풀이왼쪽의 1번부터 오른쪽 N번까지 횡단보도를 하나만 건너서 갈 때 최소 거리를 구하는 문제다.횡단보도를 제외한 나머지 구간의 합을 매번 구하면 시간초과가 발생한다.누적합을 미리 계산해 주자.최대 거리가 10만인 10만 개의 구간의 주어진다. long을 사용하자. // Solve long[] prefixSumL = new long[N]; long[] prefixSumR = new long[N]; for (int i = 1; i 첫 번째 횡단보도부터 시작해서 N번째 횡단보도까지 하나씩 건너보자.총 거리는 횡단보도를 건너기 전 왼쪽 구간의 합 + 횡단보도 길이 + 횡단보도를 건넌..