백준 2309번 일곱 난쟁이 문제를 풀어보았습니다.이 문제는 아홉 명의 난쟁이 중에서, 키의 합이 정확히 100이 되는 일곱 명을 찾는 문제입니다.백설공주와 함께 사는 일곱 난쟁이의 키 합은 100입니다.그런데 아홉 명의 난쟁이 키가 주어졌을 때, 이 중 진짜 일곱 난
이번에는 백준 10808번 알파벳 개수 문제를 풀어보았습니다.이 문제는 문자열에서 각 알파벳이 몇 번 등장했는지를 세는 문제입니다.알파벳 소문자로만 이루어진 단어 S가 주어집니다.이때 a부터 z까지 각 알파벳이 몇 번 포함되어 있는지 공백으로 구분해 출력하면 됩니다.예
이번에는 백준 2979번 트럭 주차 문제를 풀어보았습니다.이 문제는 세 대의 트럭이 각각 주차장에 머무른 시간이 주어졌을 때, 시간대별로 몇 대의 트럭이 주차되어 있는지를 계산해서 총 주차 요금을 구하는 문제입니다.트럭이 한 대 주차되어 있을 때는 1분당 A원,두 대가
이번에는 백준 10988번 팰린드롬인지 확인하기 문제를 풀어보았습니다.이 문제는 문자열이 앞에서 읽을 때와 뒤에서 읽을 때 같은지를 확인하는 문제입니다.알파벳 소문자로만 이루어진 단어가 주어집니다.이 단어가 팰린드롬이면 1, 아니면 0을 출력하면 됩니다.예를 들어lev
이번에는 백준 1159번 농구 경기 문제를 풀어보았습니다.이 문제는 선수들의 성이 주어졌을 때, 같은 첫 글자를 가진 선수가 5명 이상인 알파벳을 모두 찾는 문제입니다.이전의 알파벳 개수 문제와 비슷하게, 배열로 개수를 세는 방식으로 풀 수 있었습니다.선수들의 성이 주
이번에는 백준 11655번 ROT13 문제를 풀어보았습니다.이 문제는 문자열의 각 알파벳을 13글자씩 밀어서 변환하는 문제입니다.ROT13은 카이사르 암호의 일종으로, 알파벳을 13글자씩 밀어서 만드는 방식입니다.예를 들어A → NB → Oa → nb → o처럼 변환됩
이번에는 백준 9996번 한국이 그리울 땐 서버에 접속하지 문제를 풀어보았습니다.이 문제는 패턴 문자열에 \*가 하나 포함되어 있을 때, 여러 파일 이름이 그 패턴과 일치하는지 확인하는 문제입니다.패턴은 알파벳 소문자와 \* 하나로 이루어져 있습니다.여기서 \*는 알파
이번에는 백준 2559번 수열 문제를 풀어보았습니다.이 문제는 주어진 온도 수열에서, 연속된 K일 동안의 온도 합 중 가장 큰 값을 구하는 문제입니다.연속 구간을 하나씩 확인하면서 합을 계산하고, 그중 최댓값을 갱신하는 방식으로 정리했습니다.매일 측정한 온도가 정수 수
이번에는 백준 1620번 나는야 포켓몬 마스터 이다솜 문제를 풀어보았습니다.이 문제는 포켓몬 이름이 들어오면 번호를 출력하고, 번호가 들어오면 해당 포켓몬 이름을 출력해야 하는 문제입니다.즉, 문자열에서 숫자로도 찾아야 하고, 숫자에서 문자열로도 찾아야 해서 양방향 조
이번에는 백준 9375번 패션왕 신해빈 문제를 풀어보았습니다.이 문제는 옷 이름 자체보다 옷의 종류별 개수가 중요하고,이를 바탕으로 전체 경우의 수를 계산하는 방식의 문제였습니다.해빈이는 같은 옷 조합을 다시 입지 않습니다.주어진 의상 목록을 바탕으로, 알몸이 아닌 상
이번에는 백준 1213번 팰린드롬 만들기 문제를 풀어보았습니다.이 문제는 주어진 문자열의 알파벳 순서를 적절히 바꾸어 팰린드롬을 만들 수 있는지 확인하고, 가능하다면 그 결과를 출력하는 문제입니다.단순히 문자열을 뒤집어 비교하는 문제가 아니라, 각 알파벳의 개수를 바탕
이번에는 백준 1940번 주몽 문제를 풀어보았습니다.이 문제는 주어진 재료 번호들 중에서 두 개를 골랐을 때, 그 합이 M이 되는 경우가 몇 개인지를 구하는 문제입니다.결국 핵심은 N개의 수 중 두 수를 고르는 경우를 확인하는 것이었습니다.갑옷은 두 개의 재료로 만들
이번에는 백준 3986번 좋은 단어 문제를 풀어보았습니다.이 문제는 문자열이 A와 B로만 이루어져 있을 때, 같은 글자끼리 선이 교차하지 않게 모두 짝지을 수 있는지를 판단하는 문제입니다.처음에는 직접 규칙을 찾는 방식으로 접근했고, 이후에는 stack 자료구조를 사용
이번에는 백준 1629번 곱셈 문제를 풀어보았습니다.이 문제는 A를 B번 곱한 뒤 C로 나눈 나머지를 구하는 문제입니다.처음에는 단순 반복문으로 접근했지만, B가 매우 클 수 있기 때문에 시간 초과가 발생했고, 이후 분할 정복을 사용해 시간 복잡도를 줄이는 방식으로 정
이번에는 백준 4375번 1 문제를 풀어보았습니다.이 문제는 각 자릿수가 모두 1로만 이루어진 수 중에서, 주어진 n의 배수가 되는 가장 작은 수의 자리수를 구하는 문제입니다.처음에는 문자열을 직접 만들어서 수로 바꾸는 방식으로 접근했지만, 숫자가 너무 커질 수 있어서
이번에는 백준 2178번 미로탐색 문제를 풀어보았습니다.이 문제는 N x M 크기의 미로에서 (1, 1)에서 (N, M)까지 이동할 때, 지나야 하는 최소 칸 수를 구하는 문제입니다.각 칸은 이동 가능 여부만 다르고, 이동 자체의 비용은 모두 같기 때문에 최소 경로 문
이번에는 백준 1012번 유기농 배추 문제를 풀어보았습니다.이 문제는 배추가 심어진 위치들이 주어졌을 때, 서로 인접한 배추 묶음이 몇 개인지를 구하는 문제입니다.즉, 단순히 배추 개수를 세는 것이 아니라 연결된 그룹의 개수, 다시 말해 연속된 컴포넌트의 개수를 찾는
이번에는 백준 2468번 안전 영역 문제를 풀어보았습니다.이 문제는 비의 높이가 달라질 때마다 물에 잠기지 않는 영역의 개수가 달라지고, 그중 최대값을 구하는 문제입니다.결국 핵심은 각 비 높이마다 잠기지 않은 칸들로 이루어진 연결된 컴포넌트의 개수를 세는 것이었습니다
이번에는 백준 2583번 영역 구하기 문제를 풀어보았습니다.이 문제는 직사각형으로 채워진 부분을 제외한 나머지 영역이 몇 개로 나뉘는지 구하고, 각 영역의 넓이까지 출력해야 하는 문제입니다.즉, 단순히 연결된 컴포넌트의 개수만 세는 것이 아니라, 각 컴포넌트의 크기도
이번에는 백준 1992번 쿼드트리 문제를 풀어보았습니다.이 문제는 흑백 영상이 주어졌을 때, 현재 영역이 모두 같은 값이면 그 값을 그대로 출력하고,같지 않다면 4개의 정사각형으로 나누어 다시 같은 작업을 반복하는 문제입니다.즉, 핵심은 현재 정사각형 영역이 전부 같은
이번에는 백준 2828번 사과 담기 게임 문제를 풀어보았습니다.이 문제는 바구니가 차지하는 구간을 기준으로, 떨어지는 사과를 모두 담기 위해 바구니를 얼마나 움직여야 하는지를 구하는 문제입니다.핵심은 매번 바구니 전체를 다시 생각하기보다, 현재 바구니가 커버하는 범위가
이번에는 백준 2910번 빈도 정렬 문제를 풀어보았습니다.이 문제는 단순히 숫자를 정렬하는 것이 아니라, 숫자가 등장한 횟수를 기준으로 정렬해야 하고,등장 횟수가 같다면 먼저 나온 숫자가 앞에 와야 하는 문제였습니다.즉, 숫자 하나에 대해 단순 값만 저장하는 것이 아니
이번에는 백준 4659번 비밀번호 발음하기 문제를 풀어보았습니다.이 문제는 문자열이 주어졌을 때, 주어진 조건을 만족하면 acceptable, 만족하지 않으면 not acceptable로 판단하는 문제입니다.즉, 어떤 알고리즘을 크게 적용하기보다는 문제에서 제시한 예외
이번에는 백준 2870번 수학숙제 문제를 풀어보았습니다.이 문제는 문자열들 안에 섞여 있는 숫자들을 모두 찾아낸 뒤, 이를 비내림차순으로 정렬해서 출력하는 문제입니다.즉, 한 줄 전체를 숫자로 보는 것이 아니라 문자열 속에서 연속된 숫자 부분만 골라내야 하는 문제였습니
이번에는 백준 10709번 기상캐스터 문제를 풀어보았습니다.이 문제는 현재 구름 위치가 주어졌을 때, 각 칸에 구름이 처음 도착하는 시간이 몇 분 뒤인지를 구하는 문제입니다.핵심은 구름이 매분 동쪽으로 한 칸씩 이동한다는 점을 이용해서, 각 행을 왼쪽에서 오른쪽으로 한
이번에는 백준 3474번 교수가 된 현우 문제를 풀어보았습니다.이 문제는 N!의 값을 직접 구하는 문제가 아니라,N!의 오른쪽 끝에 붙는 0의 개수를 구하는 문제입니다.즉, 팩토리얼 자체를 계산하려고 하면 수가 너무 커지기 때문에,실제로는 0이 만들어지는 원리를 이용해
이번에는 백준 2852번 NBA 농구 문제를 풀어보았습니다.이 문제는 농구 경기에서 각 팀이 몇 분 몇 초 동안 이기고 있었는지를 구하는 문제입니다.처음에는 현재 이기고 있는 팀과 이기기 시작한 시간을 직접 관리하는 방식으로 풀었고,이후에는 시간을 전부 초 단위로 변환
이번에는 백준 1436번 영화감독 숌 문제를 풀어보았습니다.이 문제는 어떤 수에 666이 연속으로 포함되어 있으면 그 수를 종말의 수라고 할 때,N번째로 작은 종말의 수를 구하는 문제입니다.처음에는 666의 앞뒤에 어떤 숫자가 붙을 수 있는지를 직접 만들어보는 방식으로
이번에는 백준 9012번 괄호 문제를 풀어보았습니다.이 문제는 입력으로 주어진 괄호 문자열이 올바른 괄호 문자열인지 아닌지를 판단하는 문제입니다.핵심은 '('와 ')'의 짝이 올바르게 맞는지 확인하는 것이었고,그래서 자연스럽게 stack 자료구조를 사용하게 되었습니다.
이번에는 백준 4949번 균형잡힌 세상 문제를 풀어보았습니다.이 문제는 문자열 안에 있는 소괄호 ()와 대괄호 \[]가 균형을 이루고 있는지를 판단하는 문제입니다.괄호 종류가 두 가지로 늘어났지만, 핵심은 여전히 여는 괄호와 닫는 괄호의 짝을 올바르게 맞추는 것이었고,
이번에는 백준 14502번 연구소 문제를 풀어보았습니다.이 문제는 연구소의 빈칸 중 정확히 3곳에 벽을 세운 뒤, 바이러스가 퍼지고 남는 안전 영역의 최대 크기를 구하는 문제입니다.핵심은 크게 두 가지였습니다.빈칸 중 3개를 선택하는 조합그 상태에서 바이러스가 퍼지는
이번에는 백준 2636번 치즈 문제를 풀어보았습니다.이 문제는 치즈가 한 시간마다 바깥 공기와 맞닿은 부분부터 녹을 때,모든 치즈가 다 녹는 데 걸리는 시간과 다 녹기 한 시간 전 치즈 개수를 구하는 문제입니다.처음에는 치즈를 기준으로 탐색하려고 했지만,실제로는 공기에
이번에는 백준 2636번 치즈 문제를 풀어보았습니다.이 문제는 치즈가 한 시간마다 바깥 공기와 맞닿은 부분부터 녹을 때,모든 치즈가 다 녹는 데 걸리는 시간과 다 녹기 한 시간 전 치즈 개수를 구하는 문제입니다.처음에는 치즈를 기준으로 탐색하려고 했지만,실제로는 공기에
이번에는 백준 1068번 트리 문제를 풀어보았습니다.이 문제는 트리에서 특정 노드를 하나 지웠을 때, 남아 있는 트리의 리프 노드 개수를 구하는 문제입니다.처음에는 실제로 target 노드를 트리 구조에서 지우는 방식으로 접근했고, 이후에는 DFS 안에서 target을
이번에는 백준 1325번 효율적인 해킹 문제를 풀어보았습니다.이 문제는 한 번 해킹했을 때 가장 많은 컴퓨터를 함께 해킹할 수 있는 시작점을 찾는 문제입니다.핵심은 입력으로 주어지는 신뢰 관계를 그대로 쓰는 것이 아니라, 실제로 해킹이 전파되는 방향으로 관계를 뒤집어서
이번에는 백준 17298번 오큰수 문제를 풀어보았습니다.이 문제는 수열의 각 원소에 대해, 오른쪽에 있으면서 자신보다 큰 수 중 가장 왼쪽에 있는 값을 찾는 문제입니다.처음에는 오른쪽 정보를 이어서 따라가는 방식으로 접근했고, 이후에는 stack을 사용한 방식으로 다시
이번에는 백준 15686번 치킨 배달 문제를 풀어보았습니다.문제를 처음 봤을 때 치킨집의 개수가 최대 13개라는 점이 눈에 들어왔습니다.13개 정도라면 치킨집을 M개 선택하는 모든 경우를 조합으로 구할 수 있다고 생각했습니다.그래서 먼저 치킨집 조합을 구한 뒤, 해당
이번에는 백준 2589번 보물섬 문제를 풀어보았습니다.문제를 처음 봤을 때 두 지점 사이의 최단 거리를 구해야 한다는 점에서 BFS가 떠올랐습니다.보물은 서로 가장 멀리 떨어져 있는 두 육지에 묻혀 있으므로, 모든 육지에서 BFS를 수행하여 도달 가능한 가장 먼 육지까
이번에는 백준 16234번 인구 이동 문제를 풀어보았습니다.문제를 처음 봤을 때 국경이 열리는 나라들끼리 하나의 그룹으로 묶인다는 점에서 연결된 컴포넌트를 찾는 문제라고 생각했습니다.그래서 DFS를 이용하여 연합을 이루는 나라들을 찾고, 해당 연합의 인구를 재분배하는
이번에는 백준 4179번 불! 문제를 풀어보았습니다.처음에는 지훈이를 DFS로 이동시키면서 매 시간마다 불도 함께 확산시키는 방식으로 구현해보았습니다.하지만 불의 상태를 계속 복구해야 했고, 탐색 과정도 복잡해졌습니다.이후에는 불과 지훈이 모두 최단 거리 문제라는 점에
이번에는 백준 12869번 뮤탈리스크 문제를 풀어보았습니다.처음에는 DFS를 이용하여 모든 공격 경우를 탐색하려고 하였지만, 공격 횟수의 최솟값을 구해야 한다는 점에서 최단 거리 문제와 비슷하다고 생각했습니다.SCV의 체력을 상태로 두고 BFS를 수행하면 가장 먼저 모
이번에는 백준 16637번 괄호 추가하기 문제를 풀어보았습니다.처음에는 일반적인 사칙연산 문제처럼 연산자 우선순위를 적용하려고 했지만, 문제를 다시 읽어보니 모든 연산자의 우선순위가 동일하고 왼쪽부터 순서대로 계산해야 했습니다.또한 괄호는 연산자 하나만 포함할 수 있기
이번에는 백준 12851번 숨바꼭질 2 문제를 풀어보았습니다.처음에는 DFS를 이용하여 모든 이동 경로를 탐색하는 방식으로 구현해보았습니다.이동 가능한 경우가 -1, +1, \*2 세 가지이기 때문에 모든 경우를 탐색하면서 최단 시간과 경우의 수를 계산하도록 하였습니다
이번에는 백준 13913번 숨바꼭질 4 문제를 풀어보았습니다.처음에는 최단 시간을 구하는 문제이기 때문에 BFS를 사용해야겠다고 생각했습니다.그런데 이 문제는 최단 시간뿐만 아니라 실제 이동 경로까지 출력해야 했습니다.그래서 BFS를 수행하면서 현재 위치에 도달하기 직
이번에는 백준 17071번 숨바꼭질 5 문제를 풀어보았습니다.처음에는 일반적인 숨바꼭질 문제처럼 BFS를 수행하면 될 것이라고 생각했습니다.하지만 이번 문제는 동생도 계속 이동한다는 점이 기존 문제와 달랐습니다.특히 동생은 매 초마다 이동 거리가 1씩 증가하기 때문에
이번에는 백준 14497번 주난의 난(難) 문제를 풀어보았습니다.처음에는 일반적인 BFS 문제라고 생각했습니다.하지만 이동 가능한 칸인 0은 바로 이동할 수 있고, 친구가 있는 1은 한 번의 점프를 사용해야 지나갈 수 있다는 점이 눈에 들어왔습니다.즉, 이동 비용이 모
이번에는 백준 3197번 백조의 호수 문제를 풀어보았습니다.처음에는 얼음을 녹이는 과정과 백조를 이동시키는 과정을 따로 생각해야 한다고 생각했습니다.백조는 물 위에서만 이동할 수 있고, 얼음은 하루가 지날 때마다 물과 접촉한 부분이 녹게 됩니다.따라서 얼음을 녹이는 B
이번에는 백준 3197번 백조의 호수 문제를 풀어보았습니다.문제를 처음 봤을 때 단순히 백조만 이동시키는 BFS로는 해결할 수 없다고 생각했습니다.시간이 지남에 따라 얼음이 계속 녹고, 백조도 녹은 물을 따라 계속 이동해야 하기 때문입니다.그래서 얼음을 녹이는 BFS와
이번에는 백준 1987번 알파벳 문제를 풀어보았습니다.문제를 처음 봤을 때 한 번 지나간 알파벳은 다시 방문할 수 없다는 조건이 있었기 때문에 DFS와 백트래킹을 이용하여 해결할 수 있다고 생각했습니다.현재까지 지나온 알파벳들을 저장하면서 이동 가능한 모든 경우를 탐색
이번에는 백준 2529번 부등호 문제를 풀어보았습니다.문제를 처음 봤을 때 0부터 9까지의 숫자를 중복 없이 선택해야 하고, 모든 부등호 조건을 만족해야 했기 때문에 DFS를 이용한 완전 탐색으로 해결할 수 있다고 생각했습니다.숫자를 하나씩 선택하면서 현재까지의 부등호
이번에는 백준 9934번 완전 이진 트리 문제를 풀어보았습니다.중위 순회 결과만 주어지고 각 레벨의 노드를 출력해야 하는 문제였습니다.중위 순회의 특징을 생각해보면 항상 가운데 값이 현재 서브트리의 루트가 된다는 점을 이용할 수 있었습니다.그래서 가운데 노드를 기준으로
이번에는 백준 15684번 사다리 조작 문제를 풀어보았습니다.문제를 처음 봤을 때 가로선을 추가하는 모든 경우를 탐색해야 하기 때문에 백트래킹을 이용하면 해결할 수 있다고 생각했습니다.가로선을 하나 추가할 때마다 현재 사다리가 조건을 만족하는지 확인하고, 조건을 만족하
이번에는 백준 14620번 꽃길 문제를 풀어보았습니다.문제를 처음 봤을 때 꽃을 심을 수 있는 모든 위치를 탐색해야 하기 때문에 완전 탐색으로 해결할 수 있을 것이라 생각했습니다.현재 위치에 꽃을 심을 수 있는지 확인한 뒤, 심을 수 있다면 꽃을 심고 다음 꽃을 배치하
이번에는 백준 1189번 컴백홈 문제를 풀어보았습니다.문제를 처음 봤을 때 시작점에서 도착점까지 이동하는 모든 경우를 탐색해야 하고, 한 번 방문한 곳은 다시 방문할 수 없다는 조건이 있었습니다.또한 이동 거리가 정확히 K인 경우만 정답으로 인정되기 때문에 DFS와 백
이번에는 백준 19942번 다이어트 문제를 풀어보았습니다.문제를 처음 봤을 때 식재료를 선택하는 모든 경우를 확인해야 한다고 생각했습니다.식재료의 개수가 최대 15개이기 때문에 모든 부분집합을 비트마스킹으로 탐색해도 충분하다고 판단하였습니다.각 부분집합마다 영양소와 비
이번에는 백준 1285번 동전 뒤집기 문제를 풀어보았습니다.처음에는 행과 열을 모두 뒤집는 경우를 완전탐색하려고 했습니다.하지만 행과 열을 모두 고려하면 경우의 수가 최대 2^40이 되어 탐색이 불가능했습니다.다시 생각해보니 행을 뒤집는 경우만 모두 탐색한 뒤, 열은
이번에는 백준 17471번 게리맨더링 문제를 풀어보았습니다.문제를 처음 봤을 때 두 선거구를 모든 경우로 나누어 본 뒤, 각 선거구가 연결되어 있는지만 확인하면 해결할 수 있다고 생각했습니다.구역의 개수가 최대 10개이기 때문에 비트마스킹을 이용하여 모든 선거구 분할을
이번에는 백준 14890번 경사로 문제를 풀어보았습니다.문제를 처음 봤을 때 행과 열을 각각 확인하면서 경사로를 놓을 수 있는지만 판단하면 되는 문제라고 생각했습니다.처음에는 경사로를 직접 표시하는 방법을 생각했지만, 현재까지 연속된 같은 높이의 칸 개수만 관리해도 모
이번에는 백준 1062번 가르침 문제를 풀어보았습니다.처음에는 알파벳 26개 중에서 K개를 선택하는 모든 경우를 탐색하면 된다고 생각했습니다.하지만 문제를 다시 읽어보니 모든 단어는 "anta"로 시작하고 "tica"로 끝난다는 조건이 있었습니다.즉, a, n, t,
이번에는 백준 1094번 막대기 문제를 풀어보았습니다.처음에는 문제 그대로 막대를 계속 반으로 자르면서 시뮬레이션을 해야 하나 생각했습니다.하지만 문제를 다시 읽어보니 결국 사용할 수 있는 막대의 길이는 1, 2, 4, 8, 16, 32, 64뿐이라는 점을 알 수 있었
이번에는 백준 2234번 성곽 문제를 풀어보았습니다.문제를 처음 봤을 때 방의 개수와 가장 큰 방의 크기를 구하는 부분은 연결된 컴포넌트를 찾는 문제라고 생각했습니다.또한 벽 하나를 제거했을 때 가장 큰 방을 구해야 했기 때문에, 먼저 모든 방을 번호로 구분한 뒤 인접
이번에는 백준 11723번 집합 문제를 풀어보았습니다.문제를 처음 봤을 때 집합의 원소가 1부터 20까지만 존재한다는 점이 눈에 들어왔습니다.원소의 개수가 매우 적기 때문에 하나의 정수를 이용하여 비트마스킹으로 집합을 표현할 수 있다고 생각했습니다.각 연산을 비트 연산
이번에는 백준 14391번 종이 조각 문제를 풀어보았습니다.문제를 처음 봤을 때 각 칸이 가로 조각에 포함될지, 세로 조각에 포함될지만 결정하면 된다고 생각했습니다.종이의 최대 크기가 4×4이므로 총 16칸이고, 각 칸마다 두 가지 선택만 존재하기 때문에 모든 경우를
이번에는 Tree 문제를 풀어보았습니다.문제를 처음 봤을 때 트리의 조건만 만족하는지 확인하면 되는 문제라고 생각했습니다.트리는 다음 두 가지 조건을 만족합니다.간선의 개수가 정점의 개수 - 1개이다.모든 정점이 하나의 연결 요소로 이루어져 있다.이를 이용하여 DFS로
이번에는 백준 5430번 AC 문제를 풀어보았습니다.처음에는 R 명령이 나올 때마다 실제로 배열을 뒤집으면 되겠다고 생각했습니다.하지만 R의 개수가 많아질 경우 계속 뒤집는 연산이 발생하여 비효율적이었습니다.그래서 실제로 뒤집지 않고 현재 배열이 뒤집힌 상태인지만 re
이번에는 백준 14405번 피카츄 문제를 풀어보았습니다.문제를 처음 봤을 때 문자열을 앞에서부터 읽으면서 "pi", "ka", "chu" 중 하나와 일치하는지만 확인하면 된다고 생각했습니다.현재 위치에서 세 가지 문자열 중 하나가 시작되는지 확인하고, 일치한다면 해당
이번에는 백준 15353번 큰 수 A+B 문제를 풀어보았습니다.문제를 처음 봤을 때 입력되는 수의 크기가 매우 크기 때문에 일반적인 정수형으로는 저장할 수 없다는 점을 확인했습니다.그래서 문자열로 입력받은 뒤, 직접 큰 수의 덧셈을 구현하는 방식으로 해결하였습니다.일의
이번에는 백준 15926번 현욱은 괄호왕이야!! 문제를 풀어보았습니다.처음에는 올바르게 매칭되는 괄호만 표시한 뒤, 가장 길게 이어지는 구간을 찾는 방식으로 구현해보았습니다.이후에는 스택에 인덱스를 저장하면 현재 위치에서 가장 긴 올바른 괄호 문자열의 길이를 바로 구할
이번에는 백준 3015번 오아시스 재결합 문제를 풀어보았습니다.처음에는 각 사람마다 왼쪽 사람들을 모두 확인하는 방식으로 생각했지만, 사람의 수가 최대 500,000명이므로 O(N²)으로는 해결할 수 없었습니다.이후 현재 사람보다 작거나 같은 사람들은 다시 확인할 필요
이번에는 백준 2109번 순회강연 문제를 풀어보았습니다.처음에는 날짜별로 어떤 강연을 선택할지 하나씩 결정해야 하나 생각했습니다.하지만 마감일이 빠른 강연부터 처리하면서 현재까지 선택한 강연 중 가장 강연료가 작은 것만 제거하면 항상 최적의 선택을 유지할 수 있다는 점
이번에는 백준 2109번 순회강연 문제를 풀어보았습니다.처음에는 날짜별로 어떤 강연을 선택할지 하나씩 결정해야 하나 생각했습니다.하지만 마감일이 빠른 강연부터 처리하면서 현재까지 선택한 강연 중 가장 강연료가 작은 것만 제거하면 항상 최적의 선택을 유지할 수 있다는 점
이번에는 백준 9935번 문자열 폭발 문제를 풀어보았습니다.처음에는 문자열에서 폭발 문자열을 계속 찾아 제거하는 방식으로 구현해보았습니다.하지만 문자열을 계속 분리하고 다시 합치는 과정이 반복되기 때문에 최악의 경우 시간 초과가 발생했습니다.이후에는 문자열을 앞에서부터
이번에는 백준 1781번 컵라면 문제를 풀어보았습니다.문제를 처음 봤을 때 데드라인 안에서 최대한 많은 컵라면을 받을 수 있도록 문제를 선택해야 한다고 생각했습니다.모든 문제를 데드라인 기준으로 정렬한 뒤, 현재까지 선택한 문제들 중 컵라면 개수가 가장 작은 문제를 언
이번에는 백준 14469번 소가 길을 건너간 이유 3 문제를 풀어보았습니다.문제를 처음 봤을 때 소는 도착한 순서대로만 검문을 받을 수 있으므로, 먼저 도착 시간 기준으로 정렬하면 된다고 생각했습니다.이후 현재 시간과 다음 소의 도착 시간을 비교하면서 검문이 끝나는 시
이번에는 백준 1931번 회의실 배정 문제를 풀어보았습니다.문제를 처음 봤을 때 최대한 많은 회의를 선택해야 하므로, 가장 빨리 끝나는 회의를 먼저 선택하는 것이 항상 유리하다고 생각했습니다.그래서 회의를 종료 시간 기준으로 정렬한 뒤, 현재 시간 이후에 시작할 수 있
이번에는 백준 1202번 보석 도둑 문제를 풀어보았습니다.문제를 처음 봤을 때 각 가방에 들어갈 수 있는 보석 중 가장 비싼 것을 선택하면 된다고 생각했습니다.하지만 모든 가방마다 모든 보석을 확인하면 시간 초과가 발생합니다.그래서 가방과 보석을 모두 무게 기준으로 정
이번에는 백준 1644번 소수의 연속합 문제를 풀어보았습니다.문제를 처음 봤을 때 먼저 N 이하의 모든 소수를 구해야 한다고 생각했습니다.이후 연속된 소수들의 합을 구해야 했기 때문에 에라토스테네스의 체로 소수를 구한 뒤, 투 포인터를 이용하여 연속 구간의 합을 관리하
이번에는 백준 2792번 보석 상자 문제를 풀어보았습니다.문제를 처음 봤을 때 질투심의 최솟값을 직접 구하기는 어렵다고 생각했습니다.하지만 질투심을 하나의 값으로 정해두었을 때, 모든 보석을 나누어 줄 수 있는지는 쉽게 판단할 수 있다는 점을 이용하여 이분 탐색으로 해
이번에는 백준 2098번 외판원 순회 문제를 풀어보았습니다.문제를 처음 봤을 때 모든 경로를 완전탐색하면 경우의 수가 너무 많아 시간 내에 해결할 수 없다고 생각했습니다.하지만 현재 위치와 지금까지 방문한 도시만 같다면, 이후에 방문해야 하는 도시들의 최소 비용은 항상
이번에는 백준 2618번 경찰차 문제를 풀어보았습니다.처음에는 어떤 경찰차를 보내야 할지 매 순간 선택하는 그리디 문제처럼 보였지만, 현재 두 경찰차의 위치에 따라 이후 최적의 선택이 달라지기 때문에 그리디로는 해결할 수 없는 문제였습니다.현재 두 경찰차가 마지막으로
이번에는 백준 13144번 List of Unique Numbers 문제를 풀어보았습니다.이 문제는 연속 부분 수열 중 같은 숫자가 한 번도 등장하지 않는 경우의 수를 구하는 문제입니다.처음에는 모든 구간을 확인하는 완전탐색을 생각했지만, 시간복잡도가 O(N^2)가 되
이번에는 백준 2343번 기타 레슨 문제를 풀어보았습니다.처음에는 블루레이를 어떻게 나눌지 직접 결정해야 하는 문제처럼 보였지만, 실제로는 블루레이의 크기를 결정했을 때 필요한 블루레이 개수를 계산할 수 있다는 점을 이용하는 문제였습니다.따라서 블루레이의 크기를 기준으
이번에는 백준 2343번 기타 레슨 문제를 풀어보았습니다.처음에는 블루레이를 어떻게 나눌지 직접 결정해야 하는 문제처럼 보였지만, 실제로는 블루레이의 크기를 결정했을 때 필요한 블루레이 개수를 계산할 수 있다는 점을 이용하는 문제였습니다.따라서 블루레이의 크기를 기준으
이번에는 백준 17070번 파이프 옮기기 1 문제를 풀어보았습니다.처음에는 DFS만으로도 구현할 수 있었지만, 같은 위치와 같은 방향을 여러 번 방문하게 되어 중복 계산이 많이 발생했습니다.현재 파이프의 끝 위치와 방향이 같다면 이후 이동 가능한 경우의 수는 항상 같기
이번에는 백준 3273번 두 수의 합 문제를 풀어보았습니다.수열에서 서로 다른 두 수를 골라 합이 목표값 x가 되는 경우의 수를 구해야 합니다.배열을 정렬한 뒤 양 끝에서 시작하는 투 포인터를 사용하면 모든 쌍을 직접 확인하지 않고도 효율적으로 해결할 수 있습니다.서로
이번에는 백준 1700번 멀티탭 스케줄링 문제를 풀어보았습니다.멀티탭의 구멍 수보다 많은 전기용품을 순서대로 사용해야 하며, 새로운 전기용품을 꽂기 위해 기존 플러그를 빼야 할 때 그 횟수를 최소화해야 합니다.현재 꽂혀 있는 전기용품 중에서 앞으로 다시 사용되지 않거나
이번에는 백준 17144번 미세먼지 안녕! 문제를 풀어보았습니다.이 문제는 1초마다 일어나는 두 가지 변화를 순서대로 구현해야 합니다.먼저 모든 미세먼지가 동시에 확산되고, 이후 위쪽 공기청정기는 반시계 방향으로, 아래쪽 공기청정기는 시계 방향으로 공기를 순환시킵니다.
이번에는 백준 14889번 스타트와 링크 문제를 풀어보았습니다.N명의 사람을 정확히 절반씩 두 팀으로 나눈 뒤, 두 팀의 능력치 차이를 최소화해야 합니다.팀을 나누는 모든 경우를 확인해야 하므로 조합 또는 비트마스킹을 이용한 완전탐색으로 해결할 수 있습니다.N명의 사람
이번에는 백준 12100번 2048 (Easy) 문제를 풀어보았습니다.현재 보드에서 위, 아래, 왼쪽, 오른쪽 중 하나의 방향을 선택해 최대 5번 이동할 수 있습니다.각 이동에서 같은 값을 가진 블록은 합쳐질 수 있지만, 한 번 합쳐진 블록은 같은 이동에서 다시 합쳐질
이번에는 백준 3190번 뱀 문제를 풀어보았습니다.뱀의 몸을 여러 개의 좌표로 관리하면서, 매초 머리를 한 칸 이동시키고 사과의 존재 여부에 따라 꼬리를 제거할지 결정해야 합니다.또한 정해진 시간마다 방향을 회전시키고, 벽이나 자신의 몸에 부딪히는 순간 게임을 종료해야
이번에는 백준 17406번 배열 돌리기 4 문제를 풀어보았습니다.이 문제는 주어진 회전 연산을 모두 한 번씩 수행하되, 연산 순서를 자유롭게 정할 수 있습니다.회전 연산의 순서에 따라 최종 배열이 달라지므로, 가능한 모든 연산 순서를 확인한 뒤 배열의 값이 가장 작아지
이번에는 백준 15662번 톱니바퀴 (2) 문제를 풀어보았습니다.하나의 톱니바퀴를 회전시키면 맞닿아 있는 톱니의 극에 따라 양옆의 톱니바퀴도 연쇄적으로 회전할 수 있습니다.따라서 각 회전 명령마다 영향을 받는 톱니바퀴를 재귀적으로 탐색하고, 서로 반대 방향으로 회전시키
이번에는 백준 1911번 흙길 보수하기 문제를 풀어보았습니다.여러 개의 물웅덩이를 일정한 길이의 널빤지로 모두 덮어야 하며, 필요한 널빤지의 최소 개수를 구해야 합니다.물웅덩이를 시작 위치 기준으로 정렬한 뒤, 이전에 설치한 널빤지가 어디까지 덮고 있는지를 관리하는 그
이번에는 백준 17825번 주사위 윷놀이 문제를 풀어보았습니다.이 문제는 게임판 자체가 일반적인 일직선 구조가 아니라, 특정 위치에서 파란색 경로로 분기되는 구조를 가지고 있습니다.그래서 먼저 게임판을 그래프 형태로 직접 구현한 뒤, 10번의 턴마다 4개의 말 중 하나
이번에는 백준 14888번 연산자 끼워넣기 문제를 풀어보았습니다.주어진 숫자의 순서는 변경할 수 없고, 숫자 사이에 들어갈 연산자의 순서만 결정하면 됩니다.각 단계에서 사용할 수 있는 연산자를 하나씩 선택하여 계산을 진행하고, 모든 경우를 DFS로 탐색하는 방식으로 구