목록Algorithm (4)
NOW OR NEVER
프로그래머스 폰켓몬 문제당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.첫 번째(3번), 두 번째(1번) 폰켓몬을 선택첫 번째(3번), 세 번째(2번) 폰켓몬을 ..
시간복잡도 빅오 표기법 Big-O notation 프로그램의 성능을 알기 위해 고려해야 하는 것들 : 입력으로 들어오는 데이터의 크기, 프로그램이 동작하는 하드웨어 성능, 프로그램을 실행 관리하는 운영체제 성능, 프로그램을 build하는 컴파일러 최적화, 프로그램이 thread 혹은 process 사용시 비동기 로직 고려 프로그램의 성능을 정확하게 파악하는 것은 불가능하므로 컴퓨터 과학자들은 대략적인 성능을 비교하기 위한 상대적인 표기법을 사용하기로 했다. 그것이 바로 빅오 표기법이다. 시간복잡도를 나타내기 위한 방법 중 하나 빅오 표기법의 상대적인 성능을 비교 O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(2^n) < O(n!) 상수시간
자료구조 메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다. 특성 상황에 유용하다는 것은 역으로 잘못 사용할 경우 메모리를 비효율적이며 느리고 불안정적으로 데이터를 처리할 수 있다는 것이다. 전산화 작업 예시(현실에 존재하는 영화 예매를 어떻게 컴퓨터로 옮길까?) 소프트웨어 개발자가 하는 일은 거의 전산화 작업이다. 현실에서 수행되는 프로세스: 고객은 어떤 영화를 볼지 고른다 -> 고객은 영화를 예매하기 위해 줄을 선다 -> 고객은 차례가 왔을 때 좌석을 선택한다. -> 고객은 최종적으로 돈을 지불한다. 위 프로세스를 소프트웨어에서 어떻게 처리하는가 영화 검색 : 빠르게 검색하고 자동완성 기능을 제공하기 ..
자료구조와 알고리즘이란? 프로그래밍은 요리와 비슷하다(요리 : 재료선택-도구선택-레시피-요리완성) 재료 : 데이터 도구 : 자료구조 레시피 : 알고리즘 요리 : 소프트웨어 요리사 : 개발자 요리를 먹는 손님 : 소프트웨어를 이용하는 이용자 자료구조 + 알고리즘 = 프로그램 자료구조 메모리를 효율적으로 사용하며 메모리를 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표이다. 구조들은 상황에 따라 유용하게 사용될 수 있도록 만들어져 있다. 그래서 어떤 상황에서는 느리고 불안정적일 수 있다. 상황에 맞는 올바른 자료구조를 선택할 수 있는 능력이 필요하다 stack, queue, graph, tree 등이 해당된다. 알고리즘 특정 문제를 효율적이고 빠르게 해결하는 것이 궁극적인 목표이다. 정해진 일련의 절..