본문 바로가기

Algorithm

(55)
[BeakJoon 17070] 파이프 옮기기1 안녕하세요. 이번 포스팅에서는 백준 17070 파이프 옮기기1을 풀어보도록 하겠습니다. https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 이 문제는 분류상 DP긴 한데, 저는 이 문제의 경우 역행하는 경우의 수도 없고, 고려해야할 경우의 수도 최대 16x16x7이기 때문에 BFS로 풀었습니다. #include using namespace std; int n, res, board[17][17]; const int dir[3..
[BeakJoon 1700] 멀티탭 스케줄링 안녕하세요. 이번 포스팅에서는 백준 1700번 멀티탭 스케줄링 문제를 풀어보도록 하겠습니다. 해당 문제는 https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 위 링크에서 확인하실 수 있습니다. 그리디 문제이고, 멀티탭에서 어떠한 원소를 뽑는 것이 최선일까를 생각하는 것이 어려운 문제입니다. 우선 직관적으로 생각했을 때, 당연히 이후 순번에서 등장하지 않는 멀티탭을 제거하는 것이 제일 중요합니다. 2 7 2 3 2 3 1 2 7 이러한 입력이 주어졌..
[Programmers 문제 풀이] 자물쇠와 열쇠 안녕하세요. 이번 포스팅에서는 Programmers 문제인 자물쇠와 열쇠 문제를 풀어보겠습니다. 해당 문제는 아래의 링크에서 확인하실 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 단순한 완전 탐색 문제입니다. Key를 90도로 네 번 회전하는 경우의 수 -> 각 Key마다 Key의 오른쪽 아래의 끝점이 lock배열의 왼쪽 맨 위에 접하는 부분부터 각 Key의 왼쪽 위 끝점이 lock 배열의 오른쪽 맨 아래에 접하는 부분까지 모든 경우를 탐색..
[Programmers 문제 풀이] 기지국 설치 안녕하세요. 오늘은 Programmers 기지국 설치 문제를 살펴보겠습니다. 문제는 아래의 링크에서 확인하실 수 있습니다. https://programmers.co.kr/learn/courses/30/lessons/12979 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 이 문제를 처음 본 순간 최소로 놓는 기지국의 개수를 묻는 문제이므로 당연히 이분 탐색으로 접근을 시도했습니다. 하지만 이 문제는 이분 탐색으로 풀 필요가 없습니다. 왜냐하면, 이분 탐색의 mid = (start+end)..
[Programmers 문제 풀이] 외벽 점검 안녕하세요. 오늘은 Programmers의 2020 KAKAO BLIND RECRUITMENT 외벽 점검 문제에 대한 풀이를 해보겠습니다. https://programmers.co.kr/learn/courses/30/lessons/60062 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr 위 문제를 보았을 때 가장 막막했던 부분은 모든 케이스를 어떻게 검사할까였습니다. 시계방향과 반시계방향이 있기 때문에 1 3 4 9 10 의 경우 1 -> 3 -> 4 -> 9 -> 10 순으로 탐색하는 경우도 있지만 10 ..
가장 긴 증가하는 부분 수열 (Longest Increase Sequence) 안녕하세요. 이번 포스팅에서는 가장 긴 증가하는 부분 수열문제를 해결해 보도록 하겠습니다. 우선 가장 기본적인 포맷은 다음과 같습니다. https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이 문제를 dp로 해결할 수도 있는데, 이번 포스팅에서는 dp를 사용하지 않고 풀어보도록 하겠습니다. #include using namespace std; int n, res; int ..
[BeakJoon 15685] 드래곤 커브 안녕하세요. 오늘은 백준 15685 드래곤 커브 문제를 풀어보도록 하겠습니다. 해당 문제는 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 위 링크에서 확인하실 수 있습니다. 처음에 이 문제를 보았을 때 회전을 어떻게 배열에 주어야 할지, 시작점과 끝점을 어떻게 설정할 지에 대해 고민을 했었는데요. 사실 이 문제는 과정에서 회전을 하고 이어 그리는 부분이 필요가 없습니다. 왜냐하면 어디로 진행할 지 방향이 정해지면, ..
[BaekJoon 13144] List of Unique Numbers 안녕하세요. 오늘은 백준 13144 List of Unique Numbers라는 문제를 풀어보도록 하겠습니다. 해당 문제는 아래의 링크에서 확인하실 수 있습니다. https://www.acmicpc.net/problem/13144 13144번: List of Unique Numbers 길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라. www.acmicpc.net 문제를 살펴보면, 어떠한 수열이 주어지고, 해당 수열에서 같은 숫자가 없는 수열의 개수를 출력하는 문제입니다. 우선 이중 포문으로 구현을 하게 되면 O(N^2)의 시간 복잡도를 갖게 됩니다. N > n; vector v(n); for(int i..