자료구조 5

[프로그래머스] 월간 코드 챌린지 시즌2 괄호 회전하기 with Swift

안녕하세요. 오늘은 프로그래머스 괄호 회전하기 문제를 풀어보겠습니다. 괄호와 관련된 문제는 대부분 Stack 자료구조를 이용하면 문제를 해결하실수 있습니다. Stack은 Swift의 배열을 이용해서 append()와 removeLast()만 이용해서 사용하시면 됩니다! 이 문제도 마찬가지로 Stack 자료구조를 이용해서 문제를 풀어보겠습니다! 1. 문자열을 회전시킨다. var s1 = s[s.index(s.startIndex, offsetBy: i)...s.index(s.endIndex, offsetBy: -1)] if i != 0 { s1 += s[s.startIndex...s.index(s.startIndex, offsetBy: i-1)] } 2. push or pop 결정한다. var isPop =..

[자료구조] Linked List 연결리스트(1) with C

안녕하세요! 오늘은 저번에 예고했던대로 Linked List에 대해서 포스팅합니다. Linked List(이하 LL)는 배열의 기능적 업그레이드 버젼이라고 할 수 있습니다! 우선 설명 전 배열의 장단점을 이야기 해봅시다! 1. 배열의 장점 배열은 접근 속도가 빠릅니다! 연속적인 데이터의 나열이기 때문이죠! 또, 배열은 구현이 굉장히 쉽습니다! 2. 배열의 단점 배열은 중간 삽입, 삭제가 매우 어렵습니다! 특히 맨앞의 배열은 삭제시 뒤의 데이터를 일일이 한칸씩 앞당겨줘야합니다! 또한, 크기를 바꾸기 힘듭니다! 왜냐면 배열은 연속된 데이터의 나열이기 때문에 미리 크기를 정하고 메모리에 저장 장소가 잡히기 때문입니다! 그래서 만약에 바꾸고 싶다면 메모리에 새로운 배열을 만들어 데이터를 옮겨줘야합니다! 이러한 ..

[프로그래머스] 코딩테스트 연습 힙(Heap) 더 맵게 with C++

안녕하세요. 오늘은 프로그래머스 더 맵게 문제를 풀어보겠습니다. 더 맵게는 데이터중에서 가장 작은 숫자를 가져오는 시간이 중요한 문제입니다. 데이터 자체가 완벽하게 정렬이 되어있지 않더라도 항상 가장 작은 숫자를 가져오기 편한 자료구조를 생각해보면 힙(HEAP)이 있습니다. priority_queue자료구조를 사용해도 되지만 저는 예전에 만들어 놓은 힙 자료구조가 있길래 가져와 봤습니다! C로 구현된 자료구조라 OOP가 아니라 코딩하는데 익숙하지 않더라구요 허헣.... 다음에 자료구조 모두 C++로 만들어 놔야겠네요 ㅠ 더 맵게 문제는 힙을 이용해 가장 작은 두 수를 가져와서 합쳐서 다시 힙에 넣는걸 반복하면서 모든 값이 K이상임을 확인해주면 됩니다. 제가 구현한 힙은 가장 작은값이 1번 인덱스에 오기때..

[자료구조] 배열

안녕하세요! 오늘은 배열에 대해서 알아볼텐데요! 후.. C는 배열과 포인터 그리고 메모리만 잘쓰면 정말 날라다닌다고 말할 수 있을거라고 생각하는 사람중 한명입니다! 아래 첨부된 예제코드를 보면서 같이 따라해보셔도 좋습니다! 배열은 허접한 위의 그림처럼 연속된 메모리 공간이라고 생각하시면 편할듯합니다! 그러므로 시작주소를 알고있다면 어디든 무려 O(1)에 접근 가능합니다! 굉장히 빠르죠? // array int intArray[11] = {0,}; // Random access is possible because the array data is stored sequentially // in the logical and physical memory. // access O(1) int i = 0, j = 0;..

[자료구조] 시작합니다!

안녕하세요! 앞으로 자료구조에 대해서도 포스팅 해볼 예정입니다! 자료구조는 고민을 좀 해봤는데요..! 흠 그래도 unmanagement language로 하는게 좋지 않을까하여! C/C++로 해볼 예정입니다! 흠 C에서는 이렇게 접근할 수 있는 것을 C++로는 이렇게 접근할 수 있구나 이런 느낌??? 클래스 유무 차이 아니면 C로 구현한 것을 간단하게 STL을 써서 쉽게 사용하는 법! 차이점 같은 것을 볼 예정입니다! 다음 포스팅에서는 배열부터 시작하는게 좋을듯합니다! C에서 다들 배열에 대해서는 많이들 접하셨으니 편하게 따라오실 수 있을것으로 예상됩니다! 다음에 뵙겠습니다!