반응형

리스트 5

파이썬에서 빈번하게 마주하는 몇 가지 편하게 하는 방법

안녕하세요 Dibrary입니다. 이번에는 알고리즘을 풀다 빈번하게 마주하는 방법을 몇 가지 정리해보고자 합니다. 정말 사소한건데, 코드가 꽤나 길어지면 이 부분에서 시간 잡아먹힐땐 아주 아깝다는 생각이 들곤 하죠. 알고리즘을 꽤나 많이 풀어 보신 분들이야 익숙할 수 있는데, 저같이 몰라서 산전수전 다 찾아보고 뒤져봐야 하는 입장에서는 ... ㅠ.ㅜ 1. 단일 index로 가져오는 방법과 슬라이싱이 가능하다면 슬라이싱을 쓰자. 무슨말이냐면 코드를 먼저 보여드리겠습니다. 10개의 값이 있는 리스트에 [ : ] 꼴의 슬라이싱을 쓰면 범위를 벗어나더라도 '에러'가 나지 않습니다. 그러나, index로 가져올 때는 범위 밖에 있으면 '에러'가 납니다. index로 값을 가져오는 코드를 작성하다가 이 에러를 마주해..

알고리즘 2022.08.30

파이썬에서는 연결리스트를 배울 필요가 없는걸까?

안녕하세요 Dibrary입니다. 파이썬으로 설명된 자료구조 책을 보면 여느 다른 책들과 같이 '리스트, 트리, 정렬, 탐색, 그래프' 등이 나와있습니다. 근데 파이썬을 자주 써 본 사람이라면 이런 의문이 들죠. 파이썬에서는 어차피 리스트 자료형이 있는데.... 물론, 저도 그런 생각을 한 적이 있습니다. (그리고 그 리스트 자료형은 여기서 말한 연결리스트도 아니죠;;) 그런 혼란을 가지고 있지만 불편함은 없어서 그냥 유야무야 넘어가다가, 자료형 리스트가 아닌 자료구조 '단순 연결리스트, 이중 연결리스트, 원형 연결리스트' 등을 배워야 하는 이유를 최근에 알고리즘을 풀다가 깨달았습니다. 1. 불필요한 공간 낭비를 위해서 사용할 수 있다. 애초에 리스트를 배열 대신에 쓰는 이유는 공간 사용의 효율을 높이기 ..

연결리스트 - 이중 연결 리스트

안녕하세요 Dibrary입니다. 앞에서 단일연결 리스트를 보셨다면, '역순으로도 확인할 수 있으면 좋겠다~' 싶은 생각이 드셨을 수 있는데, 이 기능도 같이 구현한 것이 이중연결 리스트 입니다. 2022.05.17 - [자료구조] - 연결리스트 - 단순 연결 리스트 이렇게 양방향 화살표인 셈이죠. 근데, 사실 '개념'은 이래도, 양방향으로는 각 Node별로 앞, 뒤가 나뉘어져 있습니다. 따라서, 아래와 같이 표현하는 게 좀 더 정확합니다. 그래도 앞에서 뒤로, 뒤에서 앞으로 올 수 있다는 사실은 변함이 없습니다. 이번에도 파이썬으로 코드 구현을 해보겠습니다. 먼저 노드만을 만들어 보고 기본 개념 확인을 해보겠습니다. A와 B와 C라는 노드를 만들고, A B C 이렇게 연결 했습니다. A부터 C까지 값을 ..

자료구조 2022.05.26

연결리스트 - 단순 연결 리스트

안녕하세요 Dibrary입니다. 이번에 정리해볼 자료구조는 리스트 입니다. 일반적으로 리스트란 일련의 동일한 타입의 항목을 의미. 뭔 소리냐하믄, 비슷한 것을 줄줄이 소세지 마냥 엮어 놓은 것이라 보면 됩니다. 근데 우리는 이미 비슷한 자료구조를 알고 있죠? 배열. 배열과의 차이는 뭘까요? 배열은 데이터가 연속으로 위치해 있고, 리스트는 그럴수도 있고 아닐수도 있다는 것입니다. 리스트를 잘 보시면 군데군데 꼭 붙어있지 않더라도 연결을 해서 하나의 '배열 처럼' 만들었죠? 이렇게 떨어진 곳의 데이터를 하나의 '배열 처럼' 다루고자 하는 것이 리스트 자료구조 입니다. 보면 데이터 1개마다 1개의 화살표로 다음 데이터를 이어줬는데 한 방향입니다. 이렇게 만든 것이 단순연결리스트 이고,이 화살표가 양방향이라면 ..

자료구조 2022.05.17

알고리즘을 풀 때 항상 생각해봐야 하는 것 - 복잡도

안녕하세요 Dibrary입니다. 개발자라면 항상 습관적으로 알고리즘을 풀곤 하죠. 주로 파이썬이 '생각'을 구현하는데 편해서 많이들 사용하는데 생각보다 파이썬은 느린 언어죠. 따라서 알고리즘문제를 풀 때 반드시 조심해야 하는 것 2가지가 있습니다. 1. 시간복잡도 네 시간복잡도는 말 그대로 코드로 해답을 구하는데 '시간'이 얼마나 걸리느냐 입니다. 백준 알고리즘을 예로 들어보겠습니다. 이렇게 입력값의 범위가 주어지면 숫자가 얼마나 큰지 감이 오시나요? 아주 어마어마하죠. 문제는, 이렇게 큰 범위 값이 항상 주어지는 것은 아니지만, 전부가 주어질 수도 있다는 겁니다. 그렇기에 파이썬으로 해당 문제를 풀기 전에 시간을 먼저 구해보는 습관을 들이면 좋습니다. 위 코드는 임의로 제가 10의 100제곱만큼의 범위..

반응형