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

Easy 94

[백준 15886] 내 선물을 받아줘 2 [Java]

문제http://boj.ma/15886 15886번: 내 선물을 받아줘 2 boj.ma 풀이문제 요약1 * N칸에 놓인 선물을 ‘구사과’가 가져갈 때, ‘구사과’를 어디에 놓든 항상 선물을 가져가도록 하기 위한 최소 선물 개수를 구하자.아이디어‘구사과’는 어디에 놓이든 지도를 벗어나는 경우가 없으며, ‘EW’인 지역에 위치하거나 이동하게 되면 고립된다. 따라서 1 * N 칸 중 ‘EW’인 칸의 수 만큼 선물을 놓아야 한다. int cnt = 0; for (int i = 1; i 풀이 시간5분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/15886.java problem-so..

[백준 30518] 짜고 치는 가위바위보 (Small) [Java]

문제30518번: 짜고 치는 가위바위보 (Small) 30518번: 짜고 치는 가위바위보 (Small) boj.ma 풀이문제 요약이전에 lighter가 이겼고, 현재 비기는 경우를 제외한 모든 부분 수열의 수를 구하는 문제다.아이디어부분 수열의 수를 구해야 하므로 C(N, 1) ~ C(N, N)의 모든 부분 수열 중 조건을 만족하는 경우를 찾아야 한다.조건을 만족하는 경우인지 판별해줄 judge와 private static int judge(char lighter, char smallant) { if (lighter == smallant) return 0; if ((lighter == 'R' && smallant == 'S') || (lighter..

[백준 20937] 떡국 [Java]

문제20937번: 떡국 20937번: 떡국 boj.ma 풀이문제 요약주어진 떡국 그릇 크기로 최소한의 떡국 그릇 탑을 만들자아이디어자기 자신보다 작은 그릇만 쌓을 수 있고, 만약 큰 그릇의 수가 작은 그릇의 수보다 부족하다면 결국 떡국 그릇 탑은 더 생긴다.즉 동일한 크기의 떡국 그릇 중 최대 갯수를 가지는 그릇의 수 만큼 떡국 그릇 탑을 만들어야 한다.정렬 후 동일한 크기의 그릇의 최대 갯수를 세자 // Solve Arrays.sort(A); int prev = A[A.length - 1]; int res = 1; int cnt = 1; for (int i = A.length - 2; i >= 0; i--) { ..

[백준 04626] 가글 [Java]

문제4626번: 가글 4626번: 가글 boj.ma 풀이주어진 분자와 분모를 7진법으로 나타낼 때, B~E번째 자릿수를 출력하는 문제다.B, E가 0인 경우는 소수점 바로 오른쪽 수로, 정수 부분은 제거하자. N %= D;장제법에 따라, 분자에 10대신 7을 곱하고, 분모로 나누었을때의 몫을 자릿수로 취해야 한다.B~E번째 자릿수만 필요하므로, 0 ~ B - 1번째는 건너뛰자. for (int i = 0; i 풀이시간10분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/04626.java problem-solving/baekjoon-online-judge/eas..

[백준 08896] 가위 바위 보 [Java]

풀이8896번: 가위 바위 보 풀이N개의 로봇들이 가위바위보를 했을 때, 승리한 로봇의 번호를 출력하는 문제다.난이도에 비해 구현 사항이 많다. 순서대로 구현해보자.게임 시작 전 어떤 로봇들이 살아있는지 체크할 배열 isAlive를 선언 및 초기화 했다. // Solve boolean[] isAlive = new boolean[N]; Arrays.fill(isAlive, true);K는 한 로봇이 한 게임 동안 내는 경우와 같다.N개의 로봇들이 각 라운드 별로 어떤 수를 냈는지 enable 배열로 확인해보자. private static int[] getEnableCheckArr(boolean[] isAlive, int K) { ..

[백준 11811] 데스스타 [Java]

문제11811번: 데스스타 11811번: 데스스타 boj.ma 풀이i번째와 j번째 요소의 AND 연산 결과가 저장된 행렬의 대각선 행렬을 구하는 문제다.임의의 A(i)를 구하기 위해서는 A(j)를 제외한 i 행의 AND 연산 결과를 만족하는 M(i, j)를 구해야 한다.최소한의 조건을 만족하는 M(i, j)는 여러 개가 존재할 수 있으며 이 중 아무거나 출력하면 된다.따라서 최소한의 조건을 만족하는 M(i, j)를 구하기 위해 i행의 모든 연산 결과에 대해 OR을 적용했다. // Solve for (int i = 0; i 모든 연산 결과에 OR 연산을 한 M(i, j)는 어떤 A(j)와 AND 연산을 하더라도 올바른 결과를 얻을 수 있다.풀이 시간5분소스코드https://github.c..

[백준 01270] 전쟁 - 땅따먹기 [Java]

문제1270번: 전쟁 - 땅따먹기 1270번: 전쟁 - 땅따먹기 boj.ma 풀이병사들의 번호가 주어질 때, 과반수를 넘는 병사가 존재하는지 검사하는 문제다.Boyer-Moore Voting으로 과반수가 넘는 병사를 빠르게 찾는 방법으로 풀이했다.병사의 번호가 int 범위보다 크므로 long을 사용하자. long candidate = -1, virtualCnt = 0; for (int i = 0; i 가상의 병사 번호 빈도가 실제로 절반을 초과하는지 검사 후 병사의 번호 또는 “SYJKGW”을 출력하자. long actualCnt = 0; for (long a : A) { if (a == candi..

[백준 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..