[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

전체 글 496

[자료구조] 트리

트리 트리란 상하 관계가 존재하는 자료구조이다. 링크드 리스트와 비슷하게 트리도 노드들을 가진다. 단, 각 노드는 데이터 정보뿐만 아니라, 자식에 대한 레퍼런스를 가진다. 이를 통해 계층적 구조를 구현할 수 있게 되어 다양한 컴퓨터과학의 문제를 해결할 수 있다. 물론, 트리도 자료구조이기 때문에 여러 추상 자료형을 구현할 수 있다. 트리구조 용어 root 노드 : 가장 상위의, 즉 뿌리가 되는 노드 부모노드 : 어떤 노드의 직속 상위 노드 자식 노드 : 어떤 노드의 직속 하위 노드 형제 노드 : 같은 부모 노드를 가지는 노드 leaf노드 : 어떤 자식도 갖지 않는, 즉 잎이 되는 노드 깊이(레벨) : root노드로부터 떨어진 거리(레벨은 깊이+1) 높이 : 가장 깊이 있는 노드(leaf노드)의 깊이 부분..

[Git입문] README 파일 작성하기

repository에 README파일이 존재하지 않는다면, Github repository 하단에 Add a README 버튼이 보인다. 이를 통해 README파일을 추가할 수 있다. 추가 후 아래와 같이 작성해보았다. # python-basic100 ## 설명 파이썬 기초 100제 풀이지만 README작성 연습도 해봤습니다. ## 코드넣기 ```python print("hello world") ``` ## 링크넣기 [기초100제 링크](http://www.paullab.co.kr/codefestival.html) ## 목록넣기 * 1-100 * 1-10 * 1 * 2 ## 인용하기 > '공부하자.' -INU- ## 테이블작성 이름|영어|정보|수학 ---|---|---|---| 박인우|100|100|10..

[자료구조] 추상자료형 (ft. 큐, 스택, 딕셔너리, 세트)

기능 : '무엇'을 하는지 (자료구조마다 하는 일은 같다.) 구현 : 그 '무엇'을 어떻게 (자료구조마다 다르다.) 추상 자료형이란 자료구조를 추상화하여 표현한 것으로서, 구현보다는 기능에만 초점을 맞춘 것이다. ex) 리스트는 접근, 탐색, 삽입, 삭제의 기능이 있는 추상 자료형이다. 이를 '구현'하는 것에는 앞서 배운 동적 배열이나 링크드 리스트가 있다. 자료구조를 통해 복잡하게 생각하는 것보다는 기능에만 초점을 맞춘 추상화 자료를 떠올린다면, 보다 코드의 흐름을 이해하기 쉬워진다는 것이 추상자료형의 핵심가치이다. (물론 코드의 성능을 분석, 최적화할 때는 자료구조를 떠올려야 한다.) 구현할 때 동적 배열을 사용할 것인가? 링크드 리스트를 사용할 것인가? 동적 배열은 접근이 O(1)이지만 링크드 리스..

[Git 입문] Branch?

통합 브랜치 : 배포가 가능한 완전한 브랜치 (마스터 브랜치) 토픽 브랜치 : 그 외 특정 목적으로 설계된 브랜치 git branch로 현재 존재하는 브랜치와 사용중인 브랜치를 알 수 있다. 그리고 [git branch 브랜치이름]을 통해 새로운 브랜치를 만들 수 있다. [git checkout 브랜치이름]으로 해당 브랜치로 헤드를 변경할 수 있다. develop상태에서 내용을 추가한 뒤, add 및 push를 해준다음, 그리고 다시 master로 이동한 후 [git merge 브랜치이름]을 하면 작업내용이 합쳐진다. 그 후 [git push]를 하면 온라인 repository에도 작업내용이 저장된다. [git branch -d 브랜치이름]으로 branch를 지울 수도 있다.

[Git 입문] 커밋 내역 수정하기

[git log] 명령어로 찾은 수정내역에서 해시값을 찾아, [git reset --hard 해시값]을 하면 그 이후의 커밋들은 모두 없던것으로 만들어버릴 수 있다. 참고로 --soft 옵션을 사용하면 이 후의 내용도 저장한다. 이렇게 github의 로컬저장소의 내용이 모두 변경된 상태에서 push를 하면 오류가 뜨지만, -f 옵션으로 강제 push가 가능하긴 하다. git --amend 옵션을 통해 지금까지 사용된 commit 메세지를 수정할 수 있다.

[자료구조] 해시 테이블

key-value 데이터를 어떻게 효율적으로 관리할 수 있을까? Direct Access Table을 활용해 각 주소를 key로 활용하여 각각의 주소에 value값을 저장한다면, O(1)으로 저장하고 O(1)으로 불러올 수도 있다. 하지만 이는 데이터공간의 낭비가 일어날 수 있다. (key를 숫자로 생각하면 1, 3, 20000의 key가 있다고 생각했을때, 19997의 낭비공간이 발생) 그에 따라 제시된 것이 Hash Table이다. 이는 '해시함수'를 활용하여 값을 저장한다. 해시함수 : 특정값을 원하는 범위의 자연수로 변경해주는 함수. 원하는 범위를 정하면, 해시함수를 활용하여 적절한 위치에 key값과 value값을 모두 저장한다. 해시함수의 조건 결정론적이어야 된다. 원하는 범위의 자연수 하나하나..

[Git 입문] Git의 기본 동작원리

https://ndb796.tistory.com/187?category=1029186 Git의 동작 원리 [Git으로 시작하는 협업과 오픈소스 프로젝트 4강] 기본적으로 깃(Git) 프로젝트에 담겨 있는 데이터들은 파일 시스템 상에서의 스냅샷(Snapshot)이라고 볼 수 있습니다. 실제로 프로젝트를 커밋(Commit)하여 적용할 때의 순간을 중요시한다는 특징이 있습니다. 파.. ndb796.tistory.com [git add 파일명]을 통해 해당 파일을 Staging Area로 이동할 수 있고, (.으로 전체파일 반영가능) [git status]로 현재 Staging Area에 존재하는 파일들을 확인할 수 있다. [git reset 파일명]을 하면 다시 Staging Area의 파일이 다시 돌아온다...

[자료구조] 링크드 리스트

링크드 리스트 링크드 리스트는 데이터를 순서대로 저장해준다. 계속해서 새로운 요소를 추가할 수 있다. 배열과는 다르게 각 요소는 사실상 독립적인 레퍼런스에 위치해있다. 각 요소를 노드라고 하고, data 속성과 next 속성을 보유한다. next에는 다음 노드에 대한 레퍼런스가 들어있다. 따라서 실제 메모리에 각 노드들이 여기저기에 흩어져있어도 next속성을 통해 이어진 것처럼 활용할 수 있다. 링크드 리스트의 구성 따로 linked list클래스를 만들어서 활용한다. 그렇지만 이 linked list 클래스는 모든 노드를 멤버로 보유하지 않는다. 첫 노드 혹은 마지막 노드만을 보유하고 있다면 그에 연결된 나머지 노드들은 그를 통해 접근이 가능하기 때문이다. 따라서 linked list 클래스는 주로 첫..

[자료구조] 배열

리스트 in 파이썬 파이썬 리스트는 C 배열을 기반으로 만들어졌다. c 배열 - 선언 시 타입과 크기를 선언하여 배열 크기가 고정되어 있고, - 같은 타입의 데이터만 담기 가능하다. - 배열이 사용할 공간을 미리 할당한다. - 각 메모리 공간에 데이터가 그 자체가 연속적으로 바로 할당되는 형식이다 파이썬 리스트 - 데이터 자체는 연속적인 공간에 할당되어 있지 않지만, - 각 연속적 공간에 각 레퍼런스가 할당되어있어, 그 레퍼런스가 데이터를 가리킨다. - 따라서 그에 따라 리스트 자체로도 다양한 타입의 값을 저장할 수 있다. - (물론 그 크기의 제한도 없다. 레퍼런스가 가리키는 타입에 상관없이 레퍼런스의 크기는 일정하므로, 추가 시 레퍼런스의 크기만큼 추가를 해주면 되기 때문이다. 이에 더해 파이썬 자체..