algorithm (135) 썸네일형 리스트형 백준 2805_나무 자르기(C++) www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M을 www.acmicpc.net [문제 풀이] 이분 탐색을 이용하여 문제를 풀었습니다. 이 문제는 M 미터의 나무를 구하기 위해 절단기가 가질 수 있는 최고 높이 H를 구하는 문제였습니다. 알고리즘 문제에서 00 자르기라는 문제는 이분탐색을 이용하는 문제가 많습니다. 이 문제 또한 이분 탐색을 이용하는 문제였습니다. 아이디어 최고 높이 H는 0 ~ (나무 최대 높이) 사이에 존재한다. H를 구하기 위해서.. 백준 2003_수들의 합 2(C++) www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net [문제 풀이] 투 포인터를 이용하여 문제를 풀었습니다. 이 문제는 A[i] ~A[j]의 합이 M인 경우의 수를 찾는 문제입니다. 시간제한이 넉넉하여서 투 포인터를 이용하여 찾았습니다. 두 개의 포인터 중 뒤쪽 포인터는 굳이 지정하지 않고 i로 계속 변화를 주었습니다. 앞 쪽 포인터를 고정한 후 i를 늘려가며 합이 M과 같아지면 더해주는 식으로 구현하였습니다. [코드] #include .. 백준 1103_게임(C++) www.acmicpc.net/problem/1103 1103번: 게임 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 www.acmicpc.net [문제 풀이] DFS와 DP를 통해 문제를 해결했습니다. 1103번 게임의 문제는 동전이 움직일 수 있는 최대 횟수를 찾는 문제입니다. 언뜻 보면 DFS를 통해 브루트 포스를 이용 하면 될 것처럼 보이지만 그렇게 구현할 경우 메모리 초과가 나게 됩니다. 문제를 자세히 보게 되면 무한번 움직일 경우 -1을 출력하라는 조건이 있습니다. 이 조건은 사이클이 생기는 것을 찾으 라는 조건입니다. 또한, 사이클을 찾는다고.. 백준 1039_교환(C++) www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net [문제 풀이] 브루트 포스를 통해 문제를 해결했습니다. K 번의 자리 교환을 했을 때 가장 큰 숫자를 찾는 문제였습니다. 먼저 예외 처리를 위해 주어진 숫자 N의 문자열 길이가 1이거나 2이면서 두 번째 자릿가 0인 경우 -1을 반환하게 해주었습니다. 다음은 Queue에 주어진 N을 저장 후 모든 자리를 교환하면서 이미 본 숫자는 set에 저장해 걸러주었습니다. set에 들어있지 않은 숫자의 경우 set에 저장해주었습니다. set에 들어 있지 않은 숫자 중 K 번의 연산을 진행한 .. 백준 1339_단어 수학(C++) www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net [문제 풀이] 수학을 통해 문제를 해결했습니다. 이 문제는 단순 수학을 통해 문제를 해결하였습니다. 입력으로 들어온 문자열 중 가장 높은 자리를 많이 가진 알파벳을 골라 차례대로 높은 숫자를 부여하면 되는 문제였습니다. 예를 들어, 아래와 같이 입력이 들어왔을 때 2 GCF ACDEB A = 10000, B = 1, C = 1010, D = 100, E = 10, F = 1, G = 100으로 계산하여 내.. 백준 1062_가르침(C++) www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net [문제 풀이] 조합을 통해 문제를 해결했습니다. 이 문제는 조합을 통해 어떠한 알파벳들을 K개 만큼 가르쳤을 때 최대의 문장을 익힐 수 있을까에 대한 문제였습니다. 남극의 문장은 "anta"로 시작하여 "tica"로 끝나기 때문에 "a n t i c"을 기본적으로 가르치지 못하면 문장을 읽을 수 없습니다. 따라서 K가 5미만이면 값을 0을 출력해주도록 하였습니다. K가 5이상인 경우는 다섯 개의 문자를 .. 백준 3055_암호만들기(C++) www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net [문제 풀이] 시뮬레이션을 통해 문제를 해결했습니다. 이 문제의 경우 정렬과 조합을 이용하면 쉽게 풀리는 문제였습니다. 암호는 알파벳 순으로 나올 수 밖에 없으므로 처음에 입력받은 문자들을 정렬해 주었습니다. 그 후 문제의 답을 찾기 위해 조합을 이용하여 완전 탐색을 해주었습니다. 조합을 구현하는 과정에서 자음과 모음 개수를 확인하여 주었습니다. [코드] #include #include #include #includ.. 백준 3055_탈출(C++) www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제�� www.acmicpc.net [문제 풀이] 시뮬레이션을 통해 문제를 해결했습니다. 고슴도치와 물의 좌표를 queue에 저장해 BFS를 통해 문제를 해결했습니다. 문제에 따르면 물이 먼저 퍼지기 때문에 물을 먼저 queue의 크기만큼 퍼뜨려주고, 그 후 고슴도치 queue의 크기만큼 퍼뜨려 주는 식의 방법을 이용하였습니다. while 문의 탈출 조건은 고슴도치가 목적지의 도달했을 때, 혹은 목적지에 갈 수 없을 때입니다. [코드] #include #.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음