프로그래머스

    [알고리즘] 큐를 이용해 BFS 구현하기 (python)

    [알고리즘] 큐를 이용해 BFS 구현하기 (python)

    오늘은 BFS 구현에서 주로 사용하는 큐에 대해 포스팅하고, 관련 적용 사례를 복습해보려고 한다. 사실 BFS/DFS 문제를 풀다보면 나는 DFS에 훨씬 더 익숙해서, DFS로 주로 풀이를 한다. 그 이유가 BFS 구현에서 큐에서 막히기 때문이라고 생각했고, 관련 포스팅을 하게된 것이다! # 큐(Queue) 우선 큐는 쉽게 말해서 다음과 같은 선입선출 구조이다. 먼저 들어온 요소가 먼저 나가는, 그런 것이다. BFS(너비우선탐색) 구현에는 큐를 이용하는 것이 정석인데, 그 이유는 BFS는 인접한 노드부터 차례로 넓게 탐색하는 알고리즘이기 때문이다. (BFS에 대해서는 따로 설명하지 않겠다) Python에는 친절하게도 deque 라이브러리가 존재해서, 큐 자료구조를 이용하고 싶을 때는 관련 라이브러리를 다..

    [알고리즘] - 선형배열(리스트 내 해당 원소의 인덱스 반환)

    ✔ 주안점 index의 중복처리 반환(존재하는 모든 원소의 인덱스를 반환해야 했던 것) 💻 부끄러운 나의 코드 def solution(L, x): answer = [] if x in L: for i in range(len(L)): a = L[i] if x == a: if i< len(L): answer.append(L.index(a, i)) else: answer.append(L.index(a, i-1)) # 인덱스에 집착하다보니 index method를 이용할 수밖에 없었음. ... # 그 결과.. 비효율적인 코드 완성됨.. else: pass else: answer.append(-1) return answer ✔ 문제점 - 또 비슷하게 if/else 식의 코드 진행.... 으... 극혐.... - i..

    [알고리즘] - 선형배열 (정렬된 리스트에 원소 삽입하기)

    ✔ 주안점 - 원소가 기존 리스트의 원소보다 가장 크거나 가장 작은경우를 예외로 처리해야 했던 것 💻 부끄러운 내 코드 def solution(L, x): last = int(len(L)-1) for i in range(last): if int(L[i]) int(max(L)) : L.insert(int(len(L)), x) break elif x < int(min(L)): L.insert(0, x) break else: pass return L ✔ 문제점 - 단순 if와 else를 반복한 코드임. 너무 길고 불필요함...