본문 바로가기

algorithm/BOJ

(63)
백준 9342_염색체(C++) www.acmicpc.net/problem/9342 9342번: 염색체 상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙 www.acmicpc.net [문제 풀이] 구현을 이용하여 문제를 풀었습니다. 이 문제는 아래의 조건을 만족해야 합니다. 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다. 그 다음에는 A가 하나 또는 그 이상 있어야 한다. 그 다음에는 F가 하나 또는 그 이상 있어야 한다. 그 다음에는 C가 하나 또는 그 이상 있어야 한다. 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 끝나야 한다. 따..
백준 1927_최소 힙(C++) www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이� www.acmicpc.net [문제 풀이] STL의 우선 순위 큐를 이용하여 문제를 풀어보았습니다. 이 문제는 단순히 STL을 구현하는 것이므로 설명은 생략하겠습니다. priority_queue에 대한 개념은 아래에 링크에 정리되어있습니다. 더보기 steady-life.tistory.com/78 (C++ STL) priority_queue priority_queue< 자료형 T, 구현체 Container, 비교 연산자 Co..
백준 11279_최대 힙(C++) www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이� www.acmicpc.net [문제 풀이] STL의 우선 순위 큐를 이용하여 문제를 풀어보았습니다. 이 문제는 단순히 STL을 구현하는 것이므로 설명은 생략하겠습니다. priority_queue에 대한 개념은 아래에 링크에 정리되어있습니다. 더보기 www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를..
백준 10845_큐(C++) www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 �� www.acmicpc.net [문제 풀이] STL을 이용한 것과 직접 구현한 것 두 가지로 문제를 풀어보았습니다. 이 문제는 단순히 큐을 구현하는 것이므로 설명은 생략하겠습니다. 코드는 STL을 이용한 코드와 직접 구현한 코드 두 가지를 적어 놓은 것입니다. [STL 코드] #include #include #include using namespace std; int N; queue que; int main() { io..
백준 10828_스택(C++) www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net [문제 풀이] STL을 이용한 것과 직접 구현한 것 두 가지로 문제를 풀어보았습니다. 이 문제는 단순히 스택을 구현하는 것이므로 설명은 생략하겠습니다. 코드는 STL을 이용한 코드와 직접 구현한 코드 두 가지를 적어 놓은 것입니다. [STL 코드] #include #include #include using namespace std; int N; stack stac; int main() { ..
백준 7453_합이 0인 네 정수(C++) www.acmicpc.net/problem/7453 7453번: 합이 0인 네 정수 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. www.acmicpc.net [문제 풀이] 단순 구현을 이용하여 문제를 풀었습니다. 이 문제는 4중 반복문을 이용하게 되면 시간 초과가 나게 됩니다. 따라서 이 문제를 풀기 위해 시간을 줄이는 것에 초점을 맞췄습니다. 코드의 로직은 크게 두 가지입니다. 먼저 A, B, C, D 네 가지를 두 가지로 나누어 줍니다. 두 번째로 나눠진 것에서 합이 0이 되는 걸 찾습니다. 코드 설명 A, B, C, D를 (A, B) 합의 배..
백준 2143_두 배열의 합(C++) www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1≤m≤1,000)이 주어지고, 그 다 www.acmicpc.net [문제 풀이] 메모제이션을 이용하여 문제를 풀었습니다. 이 문제는 입력된 A, B 배열의 연속 된 부분 배열의 합 중에 두 부분 배열의 합이 T와 같은 부분 배열의 개수를 구하는 문제였습니다. 문제의 로직은 A, B의 모든 합을 저장하여 정렬한 후 합의 경계를 찾아 경우의 수를 찾는 방식으로 구현하였습니다. 코드 설명 A 배열에 값을 ..
백준 1806_부분합(C++) www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net [문제 풀이] 투 포인터를 이용하여 문제를 풀었습니다. 이 문제는 입력으로 들어온 수열의 부분집합의 합이 S 이상이 되는 것 중, 가장 짧은 수열을 찾는 문제입니다. 전형적인 투 포인터 문제입니다. 코드 설명 투 포인터를 위해 pre_idx와 post_idx를 0으로 초기화 합니다. sum의 값을 배열 첫 번째 값으로 초기화 합니다. 초기화 해준 sum의 값이 S와 같으면 값 1을 출력 합니다. ..