꼭 알아둬야 할 자료 구조: 배열 (Array)
- 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조
- 파이썬에서는 리스트 타입이 배열 기능을 제공함 (리스트는 배열보다 더 많은 기능을 가지고 있음)
기본부터 철저하게 익히세요 동기부여 영상
1. 배열은 왜 필요할까?
- 같은 종류의 데이터를 효율적으로 관리하기 위해 사용
- 같은 종류의 데이터를 순차적으로 저장
- //저장공간에서 한 칸(일정한 양)당 하나의 데이터만 들어갈 수 있을 때 임의의 공간에 저장하는 것보다
- 순차적으로 저장하는 것이 더 효율적=> 그러므로 배열을 사용 : 인덱스를 통해서 접근할 수 있음
- 장점:
- 빠른 접근 가능
- 첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근)
- 빠른 접근 가능
- 단점:
- 데이터 추가/삭제의 어려움
- 미리 최대 길이를 지정해야 함
- (어느 정도의 저장공간을 쓸 건지 정하고 시작. 그러므로 추가하기 어려워서 대부분 새로운 배열을 만든다)
- 중간을 삭제하면 뒤에 있는 데이터를 당겨야 한다.
- 데이터 추가/삭제의 어려움
엑셀로 이해해보기
C 언어 예: 영어 단어 저장
Raw NBConvert FormatNoneLaTeXreSTHTMLMarkdownPythonCustom
#include <stdio.h>
int main(int argc, char * argv[]){
char country[3] = "US";
/US를 끝내는 부분까지 3자리
/미리 자리를 정하고 시작해야 한다
/그러므로 추가할 수 없고 새로운 배열을 만들어야 한다
printf ("%c%c\n", country[0], country[1]);
printf ("%s\n", country);
return 0;
}
파이썬 언어
예: 영어 단어 저장
In [2]:
country = 'US'print (country)
US
country = country +'A'
USA
/미리 자리를 지정할 필요가 없다
/데이터를 추가할 수 있다
/파이썬의 리스트는 배열보다 기능이 더 많아서 그렇다
2. 파이썬과 배열
- 파이썬에서는 리스트로 배열 구현 가능
In [3]:
# 1차원 배열: 리스트로 구현시
data_list = [1, 2, 3, 4, 5]
data_list
Out[3]:
[1, 2, 3, 4, 5]
In [1]:
# 2차원 배열: 리스트로 구현시
/대괄호가 2개 (중첩)
data_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
data_list
Out[1]:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
In [5]:
print (data_list[0])
[1, 2, 3]
print (data_list[0][0])
1
print (data_list[0][1])
2
print (data_list[0][2])
3
print (data_list[1][0])
4
print (data_list[1][1])
5
3. 프로그래밍 연습
연습1: 위의 2차원 배열에서 9, 8, 7 을 순서대로 출력해보기
In [33]:
dataset = ['Braund, Mr. Owen Harris','Cumings, Mrs. John Bradley (Florence Briggs Thayer)','Heikkinen, Miss. Laina','Futrelle, Mrs. Jacques Heath (Lily May Peel)','Allen, Mr. William Henry','Moran, Mr. James','McCarthy, Mr. Timothy J','Palsson, Master. Gosta Leonard','Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)','Nasser, Mrs. Nicholas (Adele Achem)','Sandstrom, Miss. Marguerite Rut','Bonnell, Miss. Elizabeth','Saundercock, Mr. William Henry','Andersson, Mr. Anders Johan','Vestrom, Miss. Hulda Amanda Adolfina','Hewlett, Mrs. (Mary D Kingcome) ','Rice, Master. Eugene','Williams, Mr. Charles Eugene','Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)','Masselmani, Mrs. Fatima','Fynney, Mr. Joseph J','Beesley, Mr. Lawrence','McGowan, Miss. Anna "Annie"','Sloper, Mr. William Thompson','Palsson, Miss. Torborg Danira','Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)','Emir, Mr. Farred Chehab','Fortune, Mr. Charles Alexander','Dwyer, Miss. Ellen "Nellie"','Todoroff, Mr. Lalio']
연습2: 위의 dataset 리스트에서 전체 이름 안에 M 은 몇 번 나왔는지 빈도수 출력하기
In [40]:
m_count = 0
for data in dataset:
for index in range(len(data)):
// 단어의 길이만큼 인덱싱해서 알파벳 하나하나 가져온다
if data[index] == 'M':
m_count += 1
print (m_count)
38
참고
- range(stop): range(10)은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- range(start, stop): range(1, 11)은 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- range(start, stop, step): range(0, 20, 2)은 0, 2, 4, 6, 8, 10, 12, 14, 16, 18
- start, stop, step은 음수로 지정 가능
- step을 음수로 하면 거꾸로 뺀다
쉬어가기: Arrays are everywhere
'자료구조 알고리즘 : 코딩테스트' 카테고리의 다른 글
[이것이 취업을 위한 코딩테스트다] 12/28 (0) | 2023.12.29 |
---|---|
[이것이 취업을 위한 코딩테스트다] 05. DFS/BFS (0) | 2023.12.29 |
[알고리즘] 패캠 알고리즘- #1. 자료구조 이론 (2)자료구조와 알고리즘이란 (0) | 2021.05.26 |
[알고리즘] 패캠 알고리즘/기술면접 패키지 : 잔재미코딩 (0) | 2021.05.21 |