개발/알고리즘 38

알고리즘 입출력_

알고리즘 입출력 A+B(3)_10950 기초적인 입출력 문제이다. N 만큼의 두 수 입력을 받고 더한 값을 출력하면 된다. #include using namespace std; int main(void) { int a, b, n; cin >> n; while (n--) { cin >> a >> b; cout n; while (n--) { cin >> str; cout n; t = n; while (n--) { cin >> a >> b; cout > n; t = n; while (n--) { cin >> a >> b; cout n; while (n--) { cin >> number; num_arr.push_back(number); } min_num = *min_element(num_arr.begin(), ..

개발/알고리즘 2020.10.11

알고리즘_부산코딩대회후기

1번에서 n개의 문제를 출제하고, 각 문제는 1부터 10까지의 난이도를 가진다. 이 중 정해진 규칙대로 문제를 출제해야 한다. 정해진 규칙은 이렇다. 첫번째, 첫번째 문제가 두번째 문제보다 난이도가 낮다. 두번째, 두번째 문제가 세번째 문제보다 난이도가 낮다. 세번째, 문제의 난이도가 똑같으면 안된다. 예를 들어, [1, 2, 5, 5, 3]이라는 문제가 있으면, [1, 2, 3]은 가능하나 [1, 2, 5]는 불가능하다. 똑같은 점수가 있기 때문이다. 1번 문제라 난이도도 낮아서 수월하게 풀릴 것이라 생각했다. 그러나 80%의 정답률로 결국 통과하지 못하였다. 20분만에 풀고 넘어가려고 했는데, 1시간 넘게 잡고 있었다. 1시간 넘게 잡고 있을께 아니였는데, 집중할 수가 없었다. 왜 80%가 나온 것일..

개발/알고리즘 2019.11.16

알고리즘_부산코딩대회준비_03.동적계획법(DP)

이전까지 간단한 정렬과 dfs, bfs, 백 트래킹까지 살펴봤다. 이번에 해볼 동적계획법(Dynamic Programming)은 쉽게 말하자면 어렵거나 큰 문제를 간단하고 작은 여러 개의 문제로 나누어서 풀고 작은 문제의 답들을 이용하여 원래 문제의 답을 구하는 방식이다. DP는 메모이제이션이라는 기법을 사용한다. 메모이제이션은 미리 구해둔 정답을 메모해놓고 다음번에 다시 해당 문제를 풀고자 한다면 미리 메모해둔 정답을 가져와서 쓰는 기법이다. 흔히 점화식으로 표현한다. DP는 잘 쪼개서 점화식을 만드는게 핵심이다. 그래서 평소 수학을 잘하는 사람이 DP도 잘한다고 흔히 얘기한다. DP의 가장 기본 문제는 피보나치 수열이다. 간단하게 코드만 올려놓고 DP 다른 문제를 풀어보자. int fibo[]; fi..

개발/알고리즘 2019.11.14

알고리즘_부산코딩대회준비_수의 비밀

유적지에 2^k(0 1){ if(input % 2 == 0) input /= 2; else input = -1; } if(input == 1) printf("Yes\n"); else printf("No\n"); } // runtime error가 나온다. // 그 말인 즉슨, 재귀 과정에서 너무 많이 내려갈 수가 있다는 것이다. // 비트마스크를 이용할 수 있지 않을까? // 32 알고보니 10^18이라 int가 아닌 long long으로 데이터 타입을 맞춰줘야 했다. 이렇게 반복문으로 푸는 것 말고 비트마스크를 이용하여 푸는 방법도 있다. #include using namespace std; int main() { long long num; cin >> num; if(num == (num & (-num..

개발/알고리즘 2019.11.12

알고리즘_부산코딩대회준비_01. 탐색 및 정렬

이번주 토요일에 있을 코딩대회를 준비하며,알고리즘 기본을 다시 보도록 한다. 01. 탐색 및 정렬 02. DFS 및 BFS 03. DP 및 백트랙킹 04. 수학적 사고 순으로 진행해보려고 한다. 1-1 탐색 우선 탐색에는 완전 탐색과 이분 탐색이 있다. 1) 완전 탐색 완전 탐색은 우리가 흔히 아는 처음부터 끝까지 다해보는 것이다. 1. for문을 이용한 방법 2. 재귀를 이용한 방법 아마 간단하게 구현 가능하므로 넘어간다. 2) 이분 탐색 이분 탐색은 반으로 짤라서 탐색을 하는 것이다. 보통 정렬된 상태로 탐색을 진행한다. 정렬이 되어 있는 경우 O(logN)의 시간 복잡도를 가진다. 아래 binarySearch라는 배열에 10개의 숫자가 정렬되어 있다. 우리는 29를 찾으려고 한다. 그러면 처음 배열..

개발/알고리즘 2019.11.12

백준 1620번:나는야 포켓몬 마스터 이다솜

백준 1620번_나는야 포켓몬 마스터 이다솜 문제는 포켓몬 도감을 받고 싶다는 여러 스토리가 있지만 간단하게 이야기 하자면 , 아래와 같은 입력과 출력이 나와야 되는 것이다. //입력 26 5 Bulbasaur Ivysaur Venusaur Charmander Charmeleon Charizard Squirtle Wartortle Blastoise Caterpie Metapod Butterfree Weedle Kakuna Beedrill Pidgey Pidgeotto Pidgeot Rattata Raticate Spearow Fearow Ekans Arbok Pikachu Raichu 25 Raichu 3 Pidgey Kakuna //출력 Pikachu 26 Venusaur 16 14 이 문제는 맵을 사..

개발/알고리즘 2019.11.11