[백준] 1713번 - 후보 추천하기 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/1713난이도 : S1Tag : Simulation(구현)풀이 일자 : 2025-04-17문제 탐색하기N: 사진틀의 개수 (1 ≤ N ≤ 20)총 추천 횟수는 최대 1000회학생 번호는 1부터 100까지의 자연수조건 추천이 시작되기 전, 사진틀은 모두 비어 있다.추천받은 학생은 반드시 사진틀에 게시되어야 한다.사진틀이 가득 찼을 경우:추천 수가 가장 적은 학생의 사진을 삭제동점일 경우, 더 오래된 학생 사진을 삭제이미 게시된 학생이 추천을 받을 경우, 추천 수만 증가한다.삭제된 학생의 추천 수는 초기화된다.가능한 시간복잡도추천 횟수: 최대 1000회사진틀 개수: 최대 20개삭제 대상은 매번 리스트를 순회하여 O(N)으로 찾을 수 있습니다.Coll..
[백준] 5212번 - 지구 온난화 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/5212난이도 : S2Tag : Simulation(구현)풀이 일자 : 2025-04-16문제 탐색하기R: 지도의 세로 길이 (행), 1 ≤ R ≤ 10C: 지도의 가로 길이 (열), 1 ≤ C ≤ 10지구 온난화로 인해 50년 후 섬의 일부가 바다에 잠기게 됩니다.인접한 4칸 중 바다가 3칸 이상이면 해당 땅은 물에 잠깁니다.여기서 인접한 4칸은 상, 하, 좌, 우를 의미.또한, 지도의 범위를 벗어난 칸은 바다로 간주합니다.50년 후의 지도를 출력하되, 모든 섬을 포함하는 가장 작은 직사각형 범위만 출력해야 합니다.문제 조건에 따라 50년 후에도 최소한 하나 이상의 섬은 남습니다.가능한 시간복잡도최대 지도 크기는 10 × 10 = 100칸각 칸..
[백준] 10157번 - 자리배정 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/10157난이도 : S3Tag : Simulation(구현)풀이 일자 : 2025-04-15문제 탐색하기C: 공연장의 가로길이R: 공연장의 세로 길이K: 관객의 대기 순서공연장은 (1,1)부터 (C, R)까지의 좌석으로 구성되며, 관객들은 대기번호 순서대로 좌석에 배정됩니다.배정 방식은 (1,1)부터 시작해 시계방향으로 나선형으로 회전하며 안쪽으로 들어갑니다. 즉, 이 문제의 핵심은 나선형 회전을 구현하면서,K번째 관객이 배정받는 좌표 (y, x)를 구하는 것입니다.가능한 시간복잡도대기번호 K는 최대 1억까지 주어질 수 있지만,공연장의 최대 크기는 1000 × 1000 = 1,000,000이므로,실제로 좌석이 배정되는 최대 수는 100만 개입니다..
[백준] 13164번 - 행복 유치원 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/13164난이도 : G5Tag : 그리디풀이 일자 : 2025-04-14문제 탐색하기N명의 원생을 키 순서대로 줄 세운다.이들을 인접하게 K개의 조로 나누고각 조의 티셔츠 제작 비용은 가장 큰 키 - 가장 작은 키로 계산된다.모든 조의 비용 합을 최소화하는 것이 목표다.예를 들어1 3 5 6 10에서 K=3이면,[1,3], [5,6], [10] → 총 비용: (3-1) + (6-5) + (0) = 3이 나오게 됩니다.가능한 시간복잡도N은 최대 300,000이므로 O(N log N) 또는 O(N) 수준의 알고리즘이 필요합니다.정렬 + 슬라이싱 또는 우선순위 처리를 통해 해결 가능합니다.알고리즘 선택그리디를 선택하겠습니다.왜 그리디가 가능할까?원생은..
[백준] 18230번 - 2xN 예쁜 타일링 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/18230난이도 :  S1Tag : 그리디풀이 일자 : 2025-04-13문제 탐색하기2×N 크기의 화장실 바닥이 있다.사용 가능한 타일은 다음 두 가지이다:2×1 크기 타일 A개2×2 크기 타일 B개각 타일에는 예쁨의 정도가 주어지며, 회전 가능하다.바닥 전체를 타일링했을 때 예쁨의 총합이 최대가 되도록 배치해야 한다.가능한 시간복잡도N, A, B는 최대 2000이므로전체 타일 수는 최대 4000정렬 후 부분 선택만 하면 되므로→ O(N log N) 정도의 알고리즘이면 충분합니다.알고리즘 선택그리디 알고리즘을 선택하겠습니다.이유는 다음과 같습니다:각 타일은 회전이 가능하므로, 2×1은 1칸, 2×2는 2칸을 채운다고 보면 됩니다.한정된 공간(N칸..
[백준] 14247번 - 나무자르기 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/14247난이도 :  S2Tag : 그리디풀이 일자 : 2025-04-12문제 탐색하기n: 총 나무의 개수Hi: i번째 나무의 첫날 길이Ai: i번째 나무가 하루에 자라는 길이목표는 n일 동안 하루에 하나씩 나무를 잘라 최대한 많은 나무 길이를 얻는 것입니다.이때, 잘린 나무는 다시 0부터 자라기 때문에 같은 나무를 여러 번 자를 수 있다는 조건이 있습니다.가능한 시간복잡도입력: O(N)정렬: O(NlogN)순차 계산: O(N)→ N ≤ 100,000 이므로 30만 이내로 충분히 통과 가능합니다.알고리즘 선택그리디를 선택하겠습니다.문제를 처음 보면,“매일 자란 나무 중 가장 긴 걸 자르면 되지 않을까?” 라고 생각할 수 있습니다.하지만 아래 반례를..
[백준] 19941번 - 햄버거 분배 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/19941난이도 :  S3Tag : 그리디풀이 일자 : 2025-04-11문제 탐색하기햄버거사람햄버거사람햄버거사람햄버거햄버거사람사람햄버거사람123456789101112N: 식탁의 길이 (1 K: 햄버거를 선택할 수 있는 거리 (1  K=1일 경우 사람은 인접한 위치의 햄버거 밖에 먹을 수 없습니다. 그러므로 한명은 햄버거를 먹을 수 없습니다.k=2일 경우 모든 사람이 햄버거를 먹을 수 있게됩니다. 즉, 사람과 햄버거의 위치가 주어졌을 때, 햄버거를 먹을 수 있는 사람의 최대 수를 구하는 것이 핵심입니다.가능한 시간복잡도 • N이 최대 20,000이고, • 각 사람마다 최대 2K칸을 확인한다고 해도→ 20,000 × 21 = 42만번 연산으로 충분히..
[백준] 2529번 - 부등호 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/2529난이도 :  S2Tag : 브루트포스풀이 일자 : 2025-04-11문제 탐색하기부등호의 개수 k가 주어진다.이어서 중 하나로 이루어진 k개의 부등호가 주어진다.우리는 0~9 사이의 서로 다른 숫자를 사용해 k+1자리의 수를 만들어야 한다.단, 각 인접한 숫자 쌍이 주어진 부등호 조건을 만족해야 한다.즉, 가능한 모든 수 중에서 최댓값과 최솟값을 구하는 것이 목표입니다.예를 들어 가 주어진 경우, 부등호 순서를 만족하는 3자리 수 중에서 가장 큰 수와 가장 작은 수를 출력하면 됩니다.가능한 시간복잡도0부터 9까지의 숫자 중에서 k+1개의 숫자를 조합해야 하므로 조합 가능한 경우의 수는 10C(k+1) * (k+1)!즉, k = 9일 때가 ..