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

전체 글 824

[백준 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번째 횡단보도까지 하나씩 건너보자.총 거리는 횡단보도를 건너기 전 왼쪽 구간의 합 + 횡단보도 길이 + 횡단보도를 건넌..

[백준33559] Infinite Array Swaps [Java]

문제https://www.acmicpc.net/problem/33559 풀이두 배열을 비교하며 서로에게 존재하는 원소 쌍의 수와, 찾은 원소 순서부터 못 찾은 나머지 원소들을 출력하는 문제다.우선 두 배열을 정렬해주자. // Solve Arrays.sort(A); Arrays.sort(B);값을 비교하며 서로에게 존재하는 원소 쌍의 수와, 못 찾은 나머지 원소들을 기록하자 int a = 0, b = 0, cnt = 0; while (a 출력 형식에 맞춰서 원소들을 출력하면 된다. // Output sb.append(cnt).append("\\n"); for (Integer e : listA) { ..

[백준 03076] 상근이의 체스판 [Java]

문제https://www.acmicpc.net/problem/3076 풀이한 칸의 길이가 A, B인 R*C 배열에 대해 체스판을 그려 넣는 문제다.체스판을 만들기 위해서는 체스판의 한 칸에 해당하는 영역을 방문 후, for (int i = 0; i A*B크기에 동일한 문자를 표시하면 된다. for (int a = 0; a 동일한 문자로 해당 영역을 전부 변경했다면, 마크 모양을 변경해야 한다.또한, 새로운 행으로 이동했다면 이전 행의 첫 번째 열 마크와 달라야 한다. mark = !mark; } startMark = !startMark; mark = startMark; ..

[백준 14655] 욱제는 도박쟁이야!! [Java]

문제https://www.acmicpc.net/problem/14655 풀이주어진 규칙대로 동전을 뒤집어 게임에서 얻을 수 있는 최대 점수를 구하는 문제다. 규칙은 다음과 같다.항상 연속한 3개의 동전만 뒤집는다.동전 배열의 양 끝에서 벗어나서 양 끝의 동전만 뒤집거나양 끝의 두 개 동전만 뒤집는 것도 가능하다.동전을 뒤집는 횟수에 제한은 없다.여기서 중요한 사실은 동전을 뒤집는 횟수에 제한이 없다는 것이다.즉 어느 곳에 위치한 동전이든 결국 내가 원하는 대로 뒤집을 수 있다.따라서 주어진 2개의 동전 목록에 대해 절댓값을 더해주면 정답이 된다. // Solve int sum = 0; for (int i = 0; i 풀이 시간17분소스코드https://github.c..

[AI] ChatGPT는 U+202F로 워터마크를 남긴다고? 확실해?

목차왜 이런 루머가 생겼을까?특수 공백(U+202F)은 무엇인가?특수 문자 실제 확인 방법정리최근 인스타그램과 일부 블로그에서는 "GPT가 생성하는 텍스트에 의도적으로 U+202F(Narrow No-Break Space)와 같은 특수 공백을 워터마크로 삽입한다"는 주장이 떠돌고 있습니다. 하지만 이 주장은 기술적으로 오해의 소지가 크며, 관련된 내용을 바로잡고자 합니다.왜 이런 루머가 생겼을까?OpenAI의 ChatGPT(GPT-o3, o4-mini 등)의 응답에서 특수 문자(특히 U+202F)가 발견되며, "이것이 GPT가 텍스트에 남기는 워터마크다"라는 해석이 제기되었습니다. 하지만 RumiDocs의 공식 블로그에서 밝힌 바에 따르면"OpenAI contacted us about this post a..

Dev 2025.04.26

[백준 14402] 야근 [Java]

문제https://www.acmicpc.net/problem/14402 풀이동명이인을 고려한 전체 출퇴근 기록에 대해 출근 기록과 퇴근 기록이 일치하지 않는 경우를 전부 야근이라 가정하고, 전체 야근 인원을 구하는 문제다.만약 동명이인이 출근을 했다면, 출근한 동명이인의 수를 세주자. // Solve Map map = new HashMap(); int res = 0; while (N-- > 0) { st = new StringTokenizer(br.readLine()); String name = st.nextToken(); String op = st.nextToken(); if..

[백준 11637] 인기 투표 [Java]

문제https://www.acmicpc.net/problem/11637 풀이N명의 후보자에 대한 투표수가 주어질 때 다음 조건에 따라 올바른 문구를 출력하면 된다.최다 득표자가 과반수 득표를 했을 때최다 득표자가 절반 이하의 득표를 했을 때최다 득표자가 2명 이상일 때이를 위해서는 최다 득표 수와, 최다 득표자의 순서, 전체 투표수를 구해야 한다. int max = -1, idx = -1, sum = 0; for (int i = 0; i max) { max = A[i]; idx = i; } }이후 최다 득표자가 2명인지 확인 후 i..

[백준 01758] 알바생 강호 [Java]

문제https://www.acmicpc.net/problem/1758 풀이대기 순번 만큼 줄어든 팁을 최대한 많이 받기 위해 손님의 순서를 바꿔야 하는 문제다.팁 - 대기 순번이 0 이하인 경우에는 0원으로 계산하며, 대기 순번은 점점 커진다.따라서 작은 팁이 늦은 대기 순번으로 계산할 때 더 많은 팁을 받을 수 있다.입력받은 팁들을 내림차순으로 정렬해주자. // Solve Arrays.sort(A, Comparator.reverseOrder()); 팁 - 대기 순번의 계산 결과가 0이하가 될 때 까지 받을 수 있는 팁들을 계산하면 된다.N은 최대 10만이며 int의 범위를 초과한다 결과는 long으로 담아주자. long sum = 0; f..

[백준 03991] 한번 쏘면 멈출 수 없어 [Java]

문제https://www.acmicpc.net/problem/3991 풀이문제의 규칙에 따라 구슬들을 없애면서 최대 점수를 구하는 문제다.최대 점수를 얻기 위해서는 종류가 C개인 구슬들을 종류 별 로 한 턴에 전부 없애면 된다.그러기 위해서는 구슬을 아래에서 위로, 왼쪽에서 오른쪽으로 계단을 쌓듯 구슬을 배치하면 된다. // Solve int idx = 0; for (int j = 0; j = 0; --i) { if (color[idx] 이제 오른쪽 위부터 구슬을 제거하면 남아있는 구슬들의 위치가 바뀌지 않으면서도 한 턴에 한 종류의 구슬을 모두 제거할 수 있다. 풀이 시간≤ 13m소스코드https://github.com/rogi-rogi/..

[백준 28238] 정보 선생님의 야망 [Java]

문제https://www.acmicpc.net/problem/28238 풀이주어진 N명의 학생들의 시간표를 보고 가장 많은 학생들이 두 번의 수업에 참여할 수 있는 날과, 참여할 수 있는 인원을 구하는 문제다.학생의 수와 요일의 곱이므로 모든 경우를 다 생각해볼 수 있다.모든 경우에 대한 합을 구하고, 합이 갱신될 때 마다 두 요일을 기록해두면 된다. // Solve int a = -1, b = -1; int max = -1; for (int i = 0; i max) { a = i; b = j; max = cnt; } ..