💫 Computer Science/Computer Science
-
[알고리즘] 탐색 BFS, DFS _ 백준 1260 파이썬💫 Computer Science/Computer Science 2020. 5. 8. 11:36
○ 탐색 알고리즘 코딩테스트 단골 문제 BFS, DFS 흔히 BFS, DFS + 재귀 문제만 잘 풀어도 코딩테스트에 통과할 수 있다고 하는데요. 그만큼 단골문제로 등장하는 BFS(너비 우선 탐색), DFS(깊이 우선 탐색)에 대해 알아보고 관련 백준 예제도 풀어도보도록 하겠습니다. 우선 탐색 이란 무엇인가. 프로그래밍을 할 때 데이터베이스 안의 수 많은 자료에서 원하는 자료를 찾으려면 어떻게 해야할까요? 만약 데이터가 정렬이 되어있다면 이진탐색을 통해서 최대 로그N의 연산만으로 찾을 수 있겠지만, 정렬이나 분류가 되어있지 않는 자료라면 이야기가 달라집니다. 원하는 자료를 찾을 때 까지 하나씩 직접 확인하며 찾아야합니다. 이러한 무식한 방법이 바로 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS) 입니다..
-
[알고리즘] 그리디 알고리즘 _ 백준11047 파이썬💫 Computer Science/Computer Science 2020. 4. 27. 13:39
● Greedy Algorithm 그리디(Greedy) 알고리즘은 'greedy'(탐욕, 욕심쟁이)라는 뜻에서 유추할 수 있듯이 멀리 생각하지 않고 지금 당장의 단계에서 가장 좋은(최선의) 선택을 하는 문제해결 방법입니다. 각 단계에서 가장 좋은 선택을 했을 때 전체적으로 최선의 해결방법이 되길 바라는 알고리즘입니다. 그리디 알고리즘은 동적프로그래밍(다이나믹, DP)에서 지나치게 많은 연산과정을 거치는 것을 보완하기 위해 나온 개념이지만, 모든 문제에서 그리디 알고리즘이 최선의 선택을 보장하는 것은 아니라는 단점이 있습니다. 사실 대다수의 경우 올바른 답을 주진 않지만 쉽고 적은 연산으로 문제를 해결하는데 좋은 결과를 보장한다는 점에서 많이 사용되는 개념입니다. 예시1 - 백준 11047 동전0 그리디 ..
-
[SW개발 방법] 애자일(Agile) 방법론과 프로토타입의 등장💫 Computer Science/Computer Science 2018. 12. 18. 21:20
Agile : 기민한, 재빠른, 민첩한 애자일(Agile) 소프트웨어 개발 선언문에 따른 애자일(Agile)의 사전적 정의는 소프트웨어를 개발하는 프로젝트 과정에서 '협력과 피드백'을 더 자주 더 일찍하는 방법론을 말합니다. 과거에 많이 사용하던 폭포수(Waterfall) 방법론은 소프트웨어 개발을 순차적으로 진행하는 방법을 말하는데 요구사항 분석에서 시작하여 설계, 구현, 시험, 통합, 유지보수 단계까지의 흐름이 마치 폭포수처럼 지속적으로 아래로 향하는 순차적인 방법입니다. 하지만, 많은 사람들이 프로젝트를 진행하면서 대부분 겪는 고충은 프로젝트를 처음 설계할 때, 요구사항을 정확히 정의내리기 힘들 뿐더러 요구사항은 항상 변한다는 점입니다. 소프트웨어 개발 시작은 고객의 Needs에 의해 시작되는데 소..