일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 마스터링 비트코인
- 백서
- 문자열
- 마스터링비트코인
- DAPP
- Redis
- 알고리즘
- Ethereum
- 공개키
- 이더리움
- keras
- 스마트컨트랙트
- 암호화폐
- 비트코인
- javascript
- pythonic
- 마스터링 이더리움
- node js
- 파이썬
- 개발
- python
- 블록체인
- 레디스
- js
- 개인키
- smart contract
- 주소
- 블록체인개발
- solidity
- 솔리디티
- Today
- Total
개발이야기
[Python Skill]Skill 인듯 Skill 아닌 정리 - 1 본문
이 카테고리에서는 BOJ에서 문제를 풀면서 깨달은
Python Skill 아닌 Skill들을 정리해보려고 합니다.
간단한 자료구조, 코딩 스킬들을 정리하여 자주 보면서 익힐려는 것이 목표입니다 !
1. 입력 한줄에 받기
입력이 "4 5 1" 형식으로 주어진다면 각각 다른 변수에 저장시키고자 한다면 어떻게 해야 이쁘게 코딩할 수 있을까여?
방법은 stdin 라이브러리를 이용하는 것입니다.
<코드>
from sys import stdin
a,b,c = map(int, stdin.readline().split())
위와 같은 코드를 이용하여 만약 "4 5 1"을 입력 받았으면 a=4, b=5, c=1이 저장되게 됩니다.
map() 함수는 built-in 함수로 list 나 dictionary 와 같은 iterable 한 데이터를 인자로 받아 list 안의 개별 item을 함수의 인자로 전달하여 결과를 list로 형태로 반환해 주는 함수이다.
무슨말인지 잘 이해가 안됩니다. 위에 코드를 예시로 설명해보겠습니다.
map(int, stdin.readline().split())
만약 4,5,1 을 입력한다면 stdin.readline().split()의 결과 값은 각각 '4','5','1',이 됩니다. 이 각각의 item은 int함수로 변환해주는것이 바로 map의 기능입니다.
Tip) input() vs readline()
비슷한 기능을 하는 input과 readline에 차이는 무엇일까 !
https://stackoverflow.com/questions/22623528/sys-stdin-readline-and-input-which-one-is-faster-when-reading-lines-of-inpu
2. 파이썬에서 이차원 배열 사용하기
파이썬에서는 배열이 아닌 리스트라고 부르는 자료형이 배열의 역할을 합니다. 따라서 이차원 배열을 만드는 것은 이차원 리스트를 만드는 것과 같습니다.
다른 여러 방법이 있지만 한 줄에 이차원 배열을 선언할 수 있는 코드를 보여드리도록 하겠습니다.
이 코드는 입력을 5로 받았다면 5개의 원소를 가진 이차원 배열을 표현해줍니다.
<코드>
graph = [[] for _ in range(5)]
위와 같이 코드를 작성한다면 graph = [[], [], [], [] ,[]]이 됩니다. 각각의 이차원 배열을 추가하기 위해서는 append 매서드를 이용하여 추가해줄 수 있습니다.
graph 첫번째 인덱스에 1을 추가한 모습입니다
이차원 배열의 인덱스를 확인하듯이 graph[0][0]을 입력하면 원소 1의 결과값이 나오는 것을 확인할 수 있습니다.
3. 리스트 정렬해주기
그렇다면 graph 인덱스 각각을 정렬해주기 위해서는 어떻게 해주면 될까요?
<코드>
for _ in range(5):
graph[_].sort()
위와 같이 코드를 작성해주면 각각의 인덱스에 대해 정렬해 줄 수 있습니다. 참 쉽죠?
4. 스택, 큐 구현
스택, 큐를 c나 c++에서 구현하기 위해서는 stl 헤더 파일을 사용하거나 배열을 사용하여 구현할 수 있습니다.
Python에서는 간단히 리스트를 이용하여 push와 pop을 구현해줄 수 있습니다.
간단히 스택과 큐를 설명하면 스택은 맨 마지막에 들어온 원소가 pop을 하게 되는 경우 가장 먼저나가는 'Last In First Out(LIFO)'입니다.
반대로 큐의 경우는 먼저들어온 원소가 먼저 나가게 되는 'First In First Out(FIFO)' 입니다.
이를 구현하는 코드는 간단합니다.
<코드>
// 스택
a = []
a.append(1)
a,append(2)
a.pop()
이 경우 a = [1,2] 가 되며 pop을 하는 경우 가장 마지막에 들어온 2가 출력되고 a = [1]이 남게 됩니다.
<코드>
// 큐
a = [1,2]
a.pop(0)
이 경우 pop(0)을 하게 되면 0번 인덱스가 가장 먼저 pop이 되며 a = [2] 가 되게 됩니다.