전체 글 74

[백준]11048 이동하기 - 실버2

[오늘의 문제]https://www.acmicpc.net/problem/11048[오늘의 학습 키워드]DP, 구현1. 문제설명 N, M 크기의 미로를 탈출하는데 탈출할 때 미로에 놓여진 사탕을 최대한 많이 들고 탈출하려 합니다. 미로에서 이동하는 방법은 3가지 존재합니다.0, 0 위치를 기준으로 0, 1 로 이동하기 / 1, 0 으로 이동하기 / 1, 1 로 이동하기총 3가지가 존재할 때 가장 N, M 위치로 이동하여 탈출할 때 가장 많은 사탕을 들고 탈출 하는 방법을 구하는 문제입니다.[제한사항]시간 제한 1초메모리 제한 256 MB1 ≤ N, M ≤ 1,000사탕의 개수는 0보다 크거나 같고, 100보다 작거나 같다.2. 접근방식이번 문제 역시 점화식만 잘 세우면 쉽게 해결 가능한 문제입니다. 문제..

알고리즘 2025.05.15

[백준]10844 쉬운 계단 수 - 실버 1

[오늘의 문제]https://www.acmicpc.net/problem/10844[오늘의 학습 키워드]DP, 구현1. 문제설명 쉬운 계단 수란 양 옆으로 1씩 차이나는 수를 의미합니다.그런데 0 으로 시작하는 수는 계단수가 아닙니다. N이 주어질 때 계단수를 확인하여 그 계단 수를 1000000000 으로 나눈 값을 출력하는 문제입니다.[제한사항]시간 제한 1초메모리 제한 256MB1 ≤ N ≤ 1002. 접근방식3번째 DP 문제입니다. DP 문제는 점화식을 세워야 하는데 점화식은 곧 문제의 패턴을 찾는 방법 입니다. 이번 문제의 경우 예제가 2개 주어져 있습니다. 1이 들어온 경우 계단 수는 9개가 존재하고2가 들어온 경우 계단 수는 17개가 존재합니다. 이 두 수를 이용해서 DP 테이블을 채우는 점화..

알고리즘 2025.05.14

[백준]11057 오르막 수 - 실버 1

[오늘의 문제]https://www.acmicpc.net/problem/11057[오늘의 학습 키워드]DP, 구현1. 문제설명 수를 오름차순 정렬할 때 오름차순이 유지되는 수의 갯수를 구하는 문제 입니다. 예를들어 수가 1자리인 경우 0 ~ 9 까지 총 10개의 수가 들어갈 수 있고 각각의 수는 그 자체로 오르막 수가 됩니다. 수가 2자리인 경우 00, 01, 02, 03, 04 이런식으로 00 ~ 09 까지 들어가고1은 11, 12, 13 부터 19까지 10을 제외한 수가 오르막 수가 됩니다.2도 마찬가지로 22부터 29까지 이런식으로 99까지 수가 올 수 있고 그 갯수가 55개 입니다. 이때 수의 길이 N이 주어질 때, 오르막 수의 개수를 구하는 프로그램을 작성하는 문제입니다. 출력은 N인 오르막 수..

알고리즘 2025.05.13

[백준] 11727 2 x n 타일링 2 - 실버 3

[오늘의 문제]https://www.acmicpc.net/problem/11727[오늘의 학습 키워드]DP, 점화식, 구현1. 문제설명 N이 최소 1부터 시작하는 2 x N 타일이 존재합니다. 이 타일을 채우는 경우의 수를 모두 구하고 그 수를 10,007로 나눠 출력하는 문제입니다.[제한사항]시간 제한 1초메모리 제한 256MB1 ≤ n ≤ 1,0002. 접근방식DP 문제는 점화식을 얼마나 잘 세우느냐에 따라서 문제의 성공 여부가 달라집니다. 이번 문제는 2 x 1, 1 x 2, 2 x 2 타일로 2 x N 타일을 채우는 경우의 수를 구하는 문제 입니다. N 이 1인 경우를 살펴보겠습니다. 2 x 1 타일을 채우는 경우의 수는 2 x 1 타일 1가지 뿐입니다. N 이 2인 경우를 보겠습니다. 2 x 2..

알고리즘 2025.05.12

[백준]2805 나무 자르기 - 실버 2

[오늘의 문제]https://www.acmicpc.net/problem/2805[오늘의 학습 키워드]이분 탐색, 구현1. 문제설명 나무가 N개 주어지고 상근이가 필요로 하는 높이 M이 주어질 때나무를 최소한으로 자르기 위해 절단기의 높이를 설정하려 합니다. 나무가 20 15 10 17이 주어진 경우 절단기의 높이를 15로 설정하면 나무는 15 15 10 15 로 잘리고 잘린 부분의 길이는 7로 상근이가 원하는 길이 7미터를 얻게 됩니다. 이때 절단기의 높이는 15로 최소한의 나무를 절단하기 위해 설정한 절단기의 높이를 출력하는 문제 입니다.[제한사항]시간 제한 1초메모리 제한 256MB1 ≤ N ≤ 1,000,0001 ≤ M ≤ 2,000,000,000나무의 높이의 합은 항상 M보다 크거나 같기 때문에,..

알고리즘 2025.05.11

[백준]16928 뱀과 사다리 게임 - 골드 5

[오늘의 문제]https://www.acmicpc.net/problem/16928[오늘의 학습 키워드]구현, BFS1. 문제설명 기존의 뱀과 사다리 게임을 구현하는 문제입니다. 1번칸 부터 100번칸 까지 도착하면 게임이 종료되는데 이때 주사위를 최소한으로 굴려 100번칸으로 도착하려 합니다.첫째 줄에 사다리의 수 N과 뱀의 수 M이 주어지고그 다음 N개의 줄에 사다리의 이동정보, M개의 줄에는 뱀의 이동정보가 주어집니다. 이를 적절히 이용하여 최소한의 주사위 이동을 이용해 100번 칸에 도착하는 방법을 구하는 문제입니다.[제한사항]시간 제한 1초메모리 제한 512MB1 ≤ N ≤ 15 1 ≤ M ≤ 15 1번 칸과 100번 칸은 뱀과 사다리의 시작 또는 끝이 아니다. 모든 칸은 최대 하나의 사다리 또..

알고리즘 2025.05.10

[백준] 1654 랜선 자르기 - 실버 2

[오늘의 문제]https://www.acmicpc.net/problem/1654[오늘의 학습 키워드]구현, 이분 탐색1. 문제설명 K개의 랜선이 주어질 때 주어진 랜선을 이용해 N개의 랜선을 만들때 만들 수 있는 가장 긴 랜선의 길이를 찾는 문제 입니다. 즉 N개의 랜선을 만들때 최대한 긴 랜선을 만들어야 하는데 이런 문제는 이분 탐색을 이용하면 쉽게 해결할 수 있습니다.[제한사항]시간 제한 2초메모리 제한 128MBK는 1이상 10,000이하의 정수N은 1이상 1,000,000이하의 정수K ≦ N2. 접근방식이 문제는 이분 탐색을 이용하면 해결할 수 있습니다. 가장 짧은 랜선의 길이는 1이고 주어진 랜선 중 가장 긴 길이를 가진 랜선을 max(LAN) 을 통해 구하게 되었을 때 중간값을 구하고 그 길이..

알고리즘 2025.05.07

[백준]1027 고층건물 - 골드4

[오늘의 문제]https://www.acmicpc.net/problem/1027[오늘의 학습 키워드]브루트포스 탐색, 구현, 수학1. 문제설명 세준시에 위치한 고층 빌딩이 한줄로 이어질 때 현재 빌딩을 기준으로 보이는 모든 빌딩을 찾는 문제입니다.[제한사항]시간 제한 2초메모리 제한 128MBN은 50보다 작거나 같은 자연수빌딩의 높이는 1보다 크고 1,000,000,000 보다 작거나 같은 자연수2. 접근방식 단순히 현재 빌딩을 기준으로 이 빌딩보다 낮은 건물을 찾는게 아닌 시야각이 중요한 문제입니다. 현재 빌딩을 기준으로 다음번 빌딩을 j라고 지정할 때, 그 빌딩 사이에 있는 빌딩들의 시야각이 i와 j 빌딩의 시야각보다 낮아야지만 보인다고 판별이 되는 문제입니다. https://velog.io/@vk..

알고리즘 2025.05.02

[프로그래머스] 2025 프로그래머스 코드챌린지 1차 예선 - 유연근무제

[오늘의 문제]https://school.programmers.co.kr/learn/courses/30/lessons/388351?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[오늘의 학습 키워드]구현1. 문제설명 직원 N 명이 지각하지 않고 출근한 경우 그 사람수에 맞춰 선물을 주려는 문제입니다. 이벤트 시작 날짜가 주어질 때, 직원이 출근을 목표로 하는 시간을 기준으로 + 10분 까지는 지각이 인정되지 않습니다. 주말을 제외하고 직원이 지각하지 않고 출근한 경우 그 사람수를 구하는 문제입니다.[제한사항]1 ≤ schedules의 길이 = n ≤ 1,000schedule..

알고리즘 2025.04.30

[백준] 24479 알고리즘 수업 - 깊이 우선 탐색 1 - 실버 2

[오늘의 문제]https://www.acmicpc.net/problem/24479[오늘의 학습 키워드]깊이 우선 탐색, 정렬1. 문제설명정점의 수 N, 간선의 수 M, 시작 정점 R이 주어지고다음 M개의 줄에 간선 정보 u, v가 주어집니다.간선은 가중치가 1인 양방향 간선입니다. 이때 간선을 깊이 우선 탐색으로 방문할 때 그 순서를 출력하는 프로그램을 작성해야 합니다. 또 인접한 정점이 2개 이상이라면 오름차순으로 방문 처리를 실시해 줍니다.[제한사항]시간 제한 1초메모리 제한 512MB5 ≤ N ≤ 100,000 1 ≤ M ≤ 200,000 1 ≤ R ≤ N 1 ≤ u 2. 접근방식주어진 조건대로 그대로 깊이 우선 탐색으로 구현하면 됩니다. 1. 양방향 간선이므로 주어진 간선의 정보 u, v를 ..

알고리즘 2025.04.24