Implementation(115)
-
[백준 24544] 카카오뷰 큐레이팅 효용성 분석 [Java]
문제http://boj.ma/24544 24544번: 카카오뷰 큐레이팅 효용성 분석 boj.ma 풀이문제 요약N개의 콘텐츠 흥미도에 대해 전체의 합과 My뷰에 미등록된 콘텐츠의 합을 구하자.아이디어선형 탐색을 통해 전체합을 구하면서, My뷰 등록 여부에 따라 미등록된 콘텐츠 합만 조건부로 계산하면 된다. // Solve int total = 0, notRegistered = 0; for (int i = 0; i 풀이 시간3분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/24544.java problem-solving/baekjoon-online-judge..
2025.07.26 -
[백준 10157] 자리배정 [Java]
문제http://boj.ma/10157 10157번: 자리배정 boj.ma 풀이문제 요약주어진 배열의 (1, 1)에서 K번 만큼 달팽이 배열을 만들었을 때 마지막 위치를 출력하자.아이디어달팽이 배열의 진행 방향을 미리 정해두고, 배열 범위를 벗어났거나 이미 방문한 적 있다면 진행 방향을 변환해주면 된다. 만약 R*C가 K보다 작다면 K번째 달팽이 배열을 만들 수 없다. 0을 출력하면 된다.private static int[] solve(int K) { if (K > R*C) { return null; } int[][] board = new int[R][C]; int[] dx = {1, 0, -1, 0}; int[] dy =..
2025.07.24 -
[백준 30647] 점수 관리 [Java]
문제http://boj.ma/30647 30647번: 점수 관리 boj.ma 풀이문제 요약참가자 중 점수, 이름 순으로 동점자를 고려해서 순위를 매긴 후 순위 공개를 선택한 참가자들의 목록만 출력하자.아이디어입력 데이터가 까다롭다. 정규표현식을 사용해 파싱 후 지문에서 요구하는 대로 구현하자.String[] tokens = br.readLine().replaceAll("[\\\\[{\\"}\\\\]]", "").split(",");입력받은 참가자 정보에 대해 점수, 이름 순으로 정렬 후 순위를 비공개한 참가자를 고려해서 순위를 기입하자.class People implements Comparable { . . . @Override public int compareTo(People o) { ..
2025.07.23 -
[백준 02730] 오늘은 OS 숙제 제출일 [Java]
문제http://boj.ma/2730 풀이문제 요약마감일 정보와, 보고서의 제출일 정보가 주어졌을 때, 채점 기준에 따라 채점 해야하는 유요한 보고서인지 판별하자.아이디어문자열로 된 날짜를 정수로 변환하고, 마감일의 연도를 기준으로 제출일 연도를 유추했다.static final int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; static int toDays(int y, int m, int d) { int days = d; for (int i = 0; i 2 && isLeap(y)) days += 1; days += 365 * (y - 1); days += (y - 1) / 4..
2025.07.21 -
[백준 25624] SNUPTI [Java]
문제http://boj.ma/25624 25624번: SNUPTI boj.ma 풀이문제 요약길이가 N이고, 서로 다른 척도로 구성된 결과 M개를 만들기 위해 각 자리 별 척도 집합을 구하자.아이디어주어진 문자열을 바탕으로 척도를 구하고, 결과를 만들어 낼 수 있는지 확인하는 조건은 다음과 같다.입력받은 결과 중 중복되는 결과가 있는지하나의 결과에 척도가 중복되지 않는지 (ex: AA, BCB )척도로 만들어지는 결과 수가 입력과 일치하는지이를 다음과 같이 구현하면 된다.입력받은 결과 중 중복되는 결과가 있는지 확인하자. private static boolean solve(Set[] set, String[] input) { Set words = new HashSet(); fo..
2025.07.15 -
[백준 11067] 모노톤길 [Java]
문제http://boj.ma/11067 11067번: 모노톤길 boj.ma 풀이문제 요약N개의 카페를 왼쪽에서 오른쪽 방향으로 주어진 규칙대로 이동할 때, 카페의 좌표를 통해 방문 순서를 정하자.아이디어왼쪽에서 오른쪽으로 향하며 코너에 위치한 카페에서만 회전 할 수 있고, 그 외에는 직진만 가능하다. 현재 카페 좌표와 이전에 지나온 카페 좌표의 x가 다르다면, y가 동일한 카페로만 이동할 수 있다. 따라서 동일한 x좌표에 대해 y좌표가 적절히 정렬되어 있어야 한다. 매번 y좌표의 동일 여부에 따라 오름차순/내림차순 정렬을 수행하기보다는 이미 정렬된 요소들의 순서를 뒤집으면 된다. // Solve for (List yList : cafe.values()) { ..
2025.07.14 -
[백준 15702] 중간고사 채점 [Java]
문제15702번: 중간고사 채점 풀이문제 요약서로 다른 점수의 N문제를 응시한 M명에 대해 가장 높은 점수를 획득한 사람의 점수와 번호를 출력하자.아이디어M명의 문제 풀이 여부에 따라 점수를 합하고, 이전의 최대 점수보다 크다면 점수와 번호를 갱신하자. 만약 이전의 최대 점수와 동일하고, 번호가 작다면 번호만 갱신하자. // Solve int sum = 0; for (int j = 0; j maxScore || (sum == maxScore && no 풀이시간10분소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/15702.java p..
2025.07.10 -
[백준 02615] 오목 [Java]
문제2615번: 오목 2615번: 오목 boj.ma 풀이문제 요약19 * 19 크기의 바둑판에 존재하는 오목의 가장 왼쪽 위 바둑알의 좌표와 색상을 출력하자.아이디어오목의 가장 왼쪽 위 바둑알의 좌표를 구해야 한다. 따라서, 좌상단부터 우하단으로 이동하며 현재 위치로부터 우상(↗), 우(→), 우하(↘), 하(↓) 방향으로 오목이 있는지 검사하면 된다. private static int whoWin(int x, int y) { final int start = board[x][y]; int[][] dirs = { {-1, 1}, // ↗ {0, 1}, // → {1, 1}, // ↘ ..
2025.07.04 -
[백준 23293] 아주 서바이벌 [Java]
문제23293번: 아주 서바이벌 23293번: 아주 서바이벌 boj.ma 풀이문제 요약게임 로그를 분석해서 주어진 부정행위 조건과, 차단 조건에 해당되는 유저 명단을 출력하면 된다.이동 : 이동의 경우 확인할 조건이 없다. 그냥 이동하자획득 : 현재 위치에 관계없이 일단 아이템을 얻을 수 있다. 만약 위치가 다르다면 부정행위를 기록하자조합 : 가지고 있는 아이템의 수에 관계없이 일단 아이템을 조합할 수 있다. 만약 재료가 없는 경우 부정행위를 기록하자. 이때, 아이템의 수는 0보다 작아질 수 없음에 유의하자.공격 : 다른 지역 플레이어를 공격할 경우 부정 행위/차단 조건에 둘 다 해당된다. 하지만 차단된다 해서 이후 로그를 처리하지 않는 것은 아니다.부정 행위의 로그와, 차단 유저의 번호를 중복없이 오름..
2025.06.30 -
[백준 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) { ..
2025.06.06