no image
[자료구조] Stack with Python
예전에 보았던 배열, 2차원 리스트와 같이 자료구조의 하나인 Stack에 대해서 알아보자. 알고리즘 문제를 풀면서도 많이 사용될 것이고 그 다음 구조, 알고리즘을 풀기 위해서는 잘 알아두는 것이 좋아보인다. # Stack 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 구조 저장된 자료는 선형 구조를 갖는다. 선형구조 : 자료 간의 관계가 1ㄷ1의 관계를 갖는다. 비선형구조: 자료 간의 관계가 1대 N의 관계를 갖는다 (예: 트리) 스택에 자료를 삽입하거나 자료를 꺼낼 수 있다. 마지막에 삽입한 자룔르 가장 먼저 꺼낸다. 즉 후입선출(LIFO, Last in First Out) 구조를 갖는다. 스택 구현 위하여 필요한 자료구조와 연산 자료구조: 자료를 선형으로 저장할 저장소 배열 사용 가능 저장소 자체를 스..
2022.09.09
no image
[자료구조]- 문자열 (자료형)
컴퓨터에서의 문자표현 영어는 대소문자 합쳐서 52이므로 6(64가지)비트면 모두 표현할 수 있다. 코드체계라고 부른다. 지역마다 해석이 달라 혼동을 피하기 위해 표준안을 만들기로 했다. ASCII(American Standard Code for Information Interchanber) 문자 인코딩 표준이 제정 7bit 인코딩으로 128문자를 표현하며 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 표현 확장 아스키는 표준 문자 이외에 악센트, 도형, 특수 문자 등 부가적인 128개의 문자를 추가할 수 있게 하는 부호이다. 표준 아스키는 7bit 사용, 확장 아스키는 1B 내의 8bit 사용 확장 아스키는 프로그램이나 컴퓨터 또는 프린터가 그것을 해독할 수 있도록 설..
2022.09.09
no image
[자료구조] 2차원 배열 with Python
지날 글에서는 배열, 정렬, 그리디알고리즘에 대해 가볍게 알아보았다. 알고리즘 사이트들을 통해서 쉬운 문제부터 단계적으로 풀어보며 익숙해지고 있다. 오늘은 1차원 List를 묶어놓은 List인 2차원 배열에 대해 알아보자. 선언 2차원 이상의 다차원 List는 차원에 따라 Index를 선언 2차원 List의 선언: 세로길이(행의 개수), 가로 길이(열의 개수)를 필요로 함 Python에서는 데이터 초기화를 통해 변수선언과 초기화가 가능함 arr = [[0,1,2,3],[4,5,6,7]] (2행 4열의 2차원 List) N = int(input) arr = [list(map(int, input().split()) for _ in range(N)] 배열 순회 n X m 배열의 n*m개의 모든 원소를 빠짐없이..
2022.09.09
no image
[자료구조] 배열과 리스트 with Python
알고리즘 첫 글에서는 배열이라고 하는 자료구조에 대해 알아보자. 파이썬을 배우며 리스트, 딕셔너리 등을 배웠는데 이런 것들도 배열과 비슷한 구조를 띄고 있다. 배열 일정한 자료형의 변수들을 하나의 이름으로 열거하여 사용하는 자료구조 아래의 그림처럼 6개의 숫자를 배열로 바꾸어보았다. 배열이 왜 필요할까? 프로그램 내에서 여러 개의 변수가 필요할 때, 일일이 다른 변수명을 이용하여 자료에 접근하는 것은 매우 비효율적일 수 있다. 배열을 사용하면 하나의 선언을 통해서 둘 이상의 변수를 선언할 수 있다. 단순히 다수의 변수 선언을 의미하는 것이 아니라, 다수의 변수로는 하기 힘든 작업을 배열을 활용해 쉽게 할 수 있다. 즉, 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조 그렇다면 배열을 사용..
2022.09.09
no image
[자료구조] 자료구조?
알고리즘을 풀다 보니 스택, 큐, 트리와 같은 형태를 자주 만나게 되는데 과연 자료구조란 무엇이며, 왜 사용하고, 어떤 점이 좋은 가에 대해 궁금해지기 시작해서 자료를 찾아보고 정리하기로 하였다. 1. 의미 Data Structure 즉, Data의 집합 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것 쉽게 표현하자면 처리하고자 하는 데이터들이 모여있는 형태 처리하고자 하는 데이터들 사이의 관계(수직, 상하, 일방, 상호 등)를 정의한 것 데이터들을 사용하기 용이하게 저장해 놓은 형태 2. 목적 및 선택 기준 효율적으로 저장, 관리 잘 선택된 자료구조는 실행시간 단축, 메모리 절약의 효과를 이끌어 낸다. 자료구조를 잘 선택한다..
2022.09.09