본문 바로가기
728x90

전체 글240

[C++] 백준 16283번: Farm(ICPC 기출) https://www.acmicpc.net/problem/16283 16283번: Farm 입력은 표준입력을 사용한다. 첫 번째 줄에 네 정수 a, b, n, w가 한 줄에 주어진다. 1 ≤ a ≤ 1,000, 1 ≤ b ≤ 1,000, 2 ≤ n ≤ 1,000, 2 ≤ w ≤ 1,000,000이다. www.acmicpc.net 조건 양과 염소는 같은 사료를 먹는다. 양 한 마리는 하루에 사료를 a만큼 먹음, 염소는 하루에 b만큼 먹음 양과 염소가 몇 마리인지 확인 작업 양과 염소의 전체 수와 소비한 사료 양을 가지고 양과 염소 각각이 몇마리인지 알기 입력: a(1~1,000) b(1~1,000) n(전체 마리수2~1,000) w(전체 사료 양, 2~1,000,000) 출력: 해가 하나라면 양과 염소의 .. 2021. 9. 28.
[C++] 백준 1647번: 도시 분할 계획 https://www.acmicpc.net/problem/1647 1647번: 도시 분할 계획 첫째 줄에 집의 개수 N, 길의 개수 M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 www.acmicpc.net 조건 마을 간 도로 유지비용을 최소로 N:집의 개수, M:길의 개수 N(2~100,000), M(1~1,000,000) A B C -> A,B집을 연결하는 길의 유지비 C(1~1,000) *최소 스패닝 트리를 구하고 가장 큰 연결선 제거 #include #include #include using namespace std; int N, M; int road[10.. 2021. 9. 25.
[C++] 백준 2671번: 잠수함식별 https://www.acmicpc.net/problem/2671 2671번: 잠수함식별 입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고 www.acmicpc.net 조건 (100~1~|01)~ -> 100~1~과 01을 임의로 섞어서 만들 수 있는 모든 스트링의 집합 앞에서 부터 조건별로 제거해줌 경우의수 1. 100~1~ + 100~1~ (접합마디가 1100으로 이어짐) 2. 100~1~ + 01(101존재) 3. 01 + 100~1~ 4. 01 + 01 5. 01 끝 6. 100~1~ 끝 위 경우들과 예외처리부분을 해결해주면 문제를 해결할 수 있습니다. .. 2021. 9. 25.
[C++] 백준 1920번: 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 풀이 sort를 통해 정렬되어있는 수들을 인덱스에 따라 이진탐색을 진행해 줍니다. 여기서 이진탐색을 재귀적으로 수행하게되면 시간초과가 발생하므로 whlie 루프를 활용하여 이진탐색을 진행합니다. #include #include #include using namespace std; vectorv; void BS(int s, int e, int n) {.. 2021. 9. 24.
[C++] 병합(Merge Sort) 병합정렬 시간복잡도: 평균 = O(nlog(n)) 병합정렬은 분할정복 개념을 알고있어야 구현가능합니다. 어떠한 문제를 잘게 쪼게어 다시 조합하는 방식의 문제 해결 방법입니다. 분할정복은 보통 재귀 호출을 이용하여 구현합니다. 처음 정렬할 요소들을 쪼게고 해당 단계에서는 이동연산과 비교연산을 하지 않습니다. *계속 둘로 쪼갠 횟수만큼 n번만큼 반복 #include #include using namespace std; int S[100001]; void merge(int low, int mid, int high) { vectoru; int i = low; int j = mid + 1; while (i 2021. 9. 24.
[C++] 백준 11005번: 진법 변환2 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 조건 10진법 N을 B진법으로 변화 십진법으로 표현이 불가능 하다면 A:10, B:11 ... Z:35 이와 같이 문자로 표현 입력: N(1~10^9) B(2~36) 출력: 10진법 N을 B진법으로 출력 #include #include #include using namespace std; int main() { vectorlist; int N, B; cin >> N >> B; int sub .. 2021. 9. 24.
[C++] string 라이브러리 정리 String 라이브러리 라이브러리 선언 #include size() size() 함수는 해당 문장열의 사이즈 반환 #include #include using namespace std; int main(){ string s = "Test"; cout 2021. 9. 24.
[알고리즘 분석] 02 - 3 빠른정렬(Quicksort) 빠른정렬(Quicksort) 1962년에 영국의 호아(C.A.R. Hoare)의 의해서 고안 빠른정렬(quicksort)란 이름이 오해의 여지가 있음. 왜냐하면 사실 절대적으 로 가장 빠른 정렬 알고리즘이라고 할 수는 없기 때문이다. 차라리 “분할교환정렬(partition exchange sort)”라고 부르는 게 더 정확함. 보기: 15 22 13 27 12 10 20 25 *빠른정렬 알고리즘의 수행절차. 부분배열은 네모로 둘러싸 여 있는 데 반해, 기준 아이템은 그렇지 않다. 빠른정렬 알고리즘 문제: n개의 정수를 비내림차순으로 정렬 입력: 정수 n > 0, 크기가 n인 배열 S[1..n] 출력: 비내림차순으로 정렬된 배열 S[1..n] 알고리즘: 분할 알고리즘 문제: 빠른정렬을 하기 위해서 배열 S.. 2021. 9. 23.
[C++] N개의 최소공배수(L2) 사용이론 에라토스테네스 채, 최소 공배수, 최대 공약수 #include #include using namespace std; bool notPrime[101]; vectorprime;//1~100까지 소수를 오름차순으로 넣어둠 int LCD(long long a, int b){ int GCD = 1; for(int i = 0;i 2021. 9. 22.
728x90