본문 바로가기

Project/Algorithm31

[TopCoder] 탑코더를 시작하며 이번에 "탑코더 알고리즘 트레이닝" 책을 구입하여 이 책을 2~3주 간 모두 풀어볼 예정입니다.기초부터 잘 작성이 되어 있는 것 같고 알고리즘을 처음 시작하는 사람들에게는 정말 좋은 책 같습니다.최근에 많은 알고리즘을 풀면서 뭔가 찝찝하게 문제를 못 풀어서 빠르게 다시 시작하자고 마음 먹었습니다. 탑코더(TopCorder) 일단 이 책은 어디에서나 구입이 가능합니다. 이 책을 통해 기본적인 알고리즘 푸는 방법을 공부해보려 합니다.또한 TopCorder 알고리즘 대회에도 참가해보려고 합니다. 많은 해외 기업에서 대회도 열고 있고 전 세계적으로 많은 프로그래머들이 대회에 참가합니다. 대충이라도 세계적으로 나의 알고리즘 실력을 가늠해볼 수 있을 것입니다.현재 책에 이러한 탑코더를 사용하는 방법까지 기재를 해놨.. 2017. 10. 24.
[백준 알고리즘] 2597번(계단 오르기) - DP 문제 백준 알고리즘 DP 문제를 마스터하기 위해 오늘도 DP 문제를 풉니다.이 계단 오르기 문제는 제약사항이 있습니다. 아래에 문제를 보시면 아시겠지만 제약 조건이 있기 때문에 그 조건에 맞춰서마지막부터 고려하여 식을 작성하면 될 것 같습니다. 문제 해석 일단 문제를 이해하시는데 큰 어려움은 없을 것이고, 조건이 무엇인지 보겠습니다.1. 한 번에 1계단 또는 2계단 오를수 있다.2. 연속된 3계단을 오르지 못한다.3. 마지막 도착 계단은 반드시 밟아야 한다. 다음은 예제 입력을 배열로 나타낸 것입니다 여기서 list[1] > list[2] > list[3] 이렇게 연속해서 밟으면 안되며 마지막 list[6]은 무조건 밟아야 합니다. 맨 뒤에 list[6]을 밟아야 하니 마지막부터 보겠습니다.도착점을 밟을 수 .. 2017. 9. 11.
[백준 알고리즘] 1932번(숫자 삼각형) - DP 문제 백준 알고리즘 요즘에 많은 기업에서 알고리즘 시험을 보는 것 같습니다.카카오도 그렇고 다른 기업들도 S/W 분야는 인적성 대신 알고리즘 시험을 치는 것 같습니다.그래서 오늘도 꾸준히 문제를 풀어보도록 하겠습니다.전과 같은 DP 문제 입니다. 문제 해설 문제는 쉽게 이해를 하실 수 있을 겁니다. 제일 위에서 부터 제일 아래까지 내려가면서 자기 자식을 더해서 가장 큰 값을 구하는 문제입니다. i 가 1 ->3으로 갈 때까지 최고 합을 구하면 되는 것입니다.경우의 수를 보게 되면 ABD / ABE / ACE / ACF 이렇게 4가지가 있습니다.ABF가 안되는 이유는 당연히 문제에 대각선 왼/오른쪽(자식) 중 선택하라고 했으므로F는 C의 자식이지 B의 자식이 아니기 때문에 당연히 안됩니다. 간략하게 배열에 맞게.. 2017. 9. 9.
[백준 알고리즘] 1149번(RGB거리) - 관련 : DP문제 백준 알고리즘 오늘 풀어본 문제는 다이나믹 프로그래밍과 관련된 문제입니다.알고리즘이 아직 생소해서 그런지 문제를 이해하는데 시간이 걸렸습니다.특히 오늘은 어이없는 실수를 했습니다. 어떤 실수를 했는지는 밑에 있습니다.참 부끄럽네요 이런 실수는.... 동적 계획법(Dynamic Programming)혹시나 아직 개념을 모르시는 분이 있을까봐 설명을 드립니다.일반적으로 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것입니다.각 하위 문제의 해결을 계산하고 그 계산 값을 다른 곳에 저장해 두었다가 같은 문제가 나왔을 경우 저장된 값을 가지고와서 불필요한 것들을 줄이고 계산을 빨리 할 수 있도록 도와줍니다.더 자세한 내용은 이 곳에서 확인 하세요(출처 : 위키 백과) .. 2017. 9. 5.
[백준 알고리즘] 2407번(조합) [백준 알고리즘] 지난 번에 팩토리얼에 대해 풀었고 이번에는 조합에 대한 문제입니다. 조합에 대한 문제는 예전에 제가 이항계수 때 풀어놓은 것이 있어서그것을 이용하여 문제를 해결했습니다.이번에 조금 다른 것이 있다면 범위 입니다. 조합 조합에 대해 모르는 사람은 없을 것이라고 생각하지만혹시나 조합에 대해 모르는 사람이 있을 수도 있다고 생각하기에간단한 설명을 드리겠습니다.조합은 영어로 Combination이라고 하며 기본적인 원리는 이렇습니다.n개에서 r개를 고를 수 있는 경우의 수입니다.(중복 X)예를 들어 보겠습니다.A / B / C / D / E 라는 사람 중에 2명 씩 짝을 이룰수 있는 경우를 구해보겠습니다.AB / AC / AD / AE / BC / BD / BE / CD / CE / DE 이렇.. 2017. 9. 1.