알고리즘

    [백준 10798번] 세로 읽기 파이썬

    백준 단계별로 문제를 풀기 시작하다보면, 2d-array에 관한 문제가 나옵니다. 단계별로 올라갈수록 맛보기 수준의 문제에서 난이도가 올라가는 것을 체감할 수 있습니다. 오늘은 10798번 문제에 대해 어떻게 풀었는지 공유해보겠습니다. (https://www.acmicpc.net/problem/10798) 다음 문제에서 챌린지는 matrix를 가로방향이 아닌 세로방향으로 읽어야함 각 행(단어)별로 0~15까지 가변 길이를 갖고 있음 문제는 두번째 포인트인데, 어떻게 예외를 처리할까 고민하게 될 수 있습니다. 답은 생각보다 간단합니다. if __name__ == '__main__': words = [input() for i in range(5)] for j in range(15): for i in rang..

    python 리스트 요소 한 줄로 한번에 출력 print(*arr)

    코딩 테스트를 풀다보면, 한 줄에 리스트 내 모든 값을 출력해야할 때가 있습니다. 이럴 때 보통 접근하는 방법은 아래처럼 for문을 활용하는 경우가 있습니다. arr = [1, 2, 3, 4, 5] for i in range(len(arr)): print(i, end=" ") 이렇게 for 문을 돌리지 않고 출력하는 방법은 사실 매우 간단합니다. 단순하게 출력하고자하는 리스트 앞에 *를 붙여주어 print문에 넣어주면 됩니다. --> print(*arr) arr = [1, 2, 3, 4, 5] print(*arr) # 1 2 3 4 5 print(arr) # [1, 2, 3, 4, 5] 리스트에 별표 (asterick; *)를 활용하면 리스트 압축을 해제하기 때문입니다.

    [python] stack 구현 (고정길이 스택 fixed stack, class 활용)

    (본 포스팅은 Do It! 시리즈의 '자료구조와 함께 배우는 알고리즘 입문 - 파이썬편'을 참고하여 작성하였습니다.) 데이터를 임시 저장하는 기본 자료 구조는 대표적으로 두 가지가 있는데, 스택(stack)과 큐(queue)이다. 스택은 일반적으로 데이터 입력과 출력 순서가 후입선출(Last in First Out)인 것이 특징이다. 이 기능을 구현하기 위해서 우리가 생각해봐야할 부분은 어떤 것이 있을까? 크게 살펴보자면 첫째로, 데이터를 집어 넣는 push 기능 둘째로, 데이터를 꺼내는 pop 기능 셋째로, 스택의 길이를 알려주는 len 기능 넷째로, 스택이 비었는지 확인하는 기능 다섯번 째로, 스택이 가득 차 있는지 확인하는 기능 여섯번 째로, 특정 값이 스택 어디에 위치해있는지 확인하는 기능 일곱번..

    [python] 기본적인 탐색 알고리즘 1 - DFS

    탐색 알고리즘에 대해 알아봅시다. 인공지능을 공부하면, 상당수의 개념이 상태공간에서 비롯됨을 알 수 있습니다. 이러한 상태공간을 탐색하는데에는 여러 방법이 있는데요. 그중에서도 아무런 기초 지식이 없을때 활용할 수 있는 탐색 방법중 하나인 망라적 탐색(Exhaustive Search)에 대해서 알아보도록 하겠습니다. 망라적 탐색을 수행하려면 몇 가지 기본적인 Rule을 숙지해야합니다. 이미 확인한 곳을 다시 확인해서는 안됨 (closed list로 관리) 아직 확인하지 않은 곳을 알고 있어야함 (open list로 관리) 효율적인 순서로 탐색해야함 -> 깊이우선탐색(DFS), 너비우선탐색(BFS) 활용 그 중에서도 이번에는 깊이 우선 탐색인 Depth-First Search (DFS)에 대해 알아보고, ..