안녕하세요.
오늘은 파이썬 기본 문법인 List와 Dict을 활용한 면접 문제 코딩을 하나 작성하도록 하겠습니다.
tuple( ( ) 사용) : 일반적으로 배열(정적할당)처럼 사용된다. 그러므로 불가변적으로 변수를 집어넣을 수 없다.
List( [ ] 사용 ) : 일반적으로 배열(동적할당)처럼 사용된다. 그러므로 가변적으로 변수를 집어 넣을 수 있다.
Dict( { } 사용) : List와 달리 Index도 입력해야한다.
그렇다면 Dictionary은 왜 사용하는가?
그 이유는 데이터 처리에 있어 Dict은 프로그래머가 이미 Index를 알고 있어, 바로 해당하는 데이터로 접근합니다.
List는 배열 구조로서 크기가 10(0~9)인 List가 있다고 가정하게 되면, 9번 데이터에 접근하기 위해 순차적으로 인덱스가 0부터 8까지 모두 접근을 한 이 후에 9번에 접근하게 됩니다.
List는 9번을 메모리에 들락날락한다면,
DIctionary는 단, 1번으로 자신이 원하는 메모리에 접근할 수 있습니다.
그러므로 List에 비해 DIct의 속도가 더 빠릅니다. 메모리의 사이즈가 더 커진다면 그 속도의 차이는 더욱 커질 것입니다.
문제 : List : 사과, 바나나, 딸기, 키위, 복숭아의 갯수가 몇개인가?
#list
fruits = ["사과", "사과", "바나나", "바나나", "딸기", "키위", "복숭아", "복숭아", "복숭아"]
#dict
dict = {}
for fruit in fruits:
if fruit in dict:
dict[fruit] = d[fruit] +1
else:
dict[fruit] = 1
print(dict)
#결과 : {'사과': 2, '바나나': 2, '딸기': 1,'키위': 1, '복숭아': 3}
처음에 정답을 봤을 때, 정말 간단한 코딩이지만 List와 Dict에 정확히 이해해야만 풀 수 있는 문제입니다.
학기를 시작하여 매일은 아니지만 주에 몇 번씩 파이썬 면접문제를 몇 개씩 올려서 풀어볼려고 합니다.
'Python > Basic' 카테고리의 다른 글
[파이썬] 자료구조 : 재귀함수 & 큐(Queue) & FIFO구조 (2) | 2020.05.02 |
---|---|
[파이썬 기본] Low Pass Filter(저역통과필터), High Pass Filter(고역통과필터), Band Pass Filter(대역통과필터) 모듈화 & 라이브러리화시키기 (4) | 2020.04.21 |
[파이썬] 자료구조 : python(List) 메모리 구조에 대해 파헤치기 (0) | 2020.04.04 |
[파이썬] 자료구조 : 재귀함수 & 스택구조 & LIFO구조 (0) | 2020.03.21 |
[파이썬] 자료구조 : 버블 정렬 (0) | 2020.03.20 |