내일배움캠프 25일차 TIL
개발일지 시작의
알고리즘 3일차 화이팅
개발 업무내용
백준풀기, 알고리즘 강의 듣기
오늘의 이슈/고민..그리고 해결한 내용
1. stack
- 한쪽에서만 자료를 넣거나 뺄 수 있는 선형구조(LIFO = Last In First Out), 후출선입 => 뒤로가기, 실행 취소 등에 활용
- push(data) : 제일 위로 데이터 넣기
- pop : 제일 위에 있는 데이터 뽑기
- peek : 제일 위에 있는 데이터 보기
- empty : 스택이 비어있는지 아닌지 확인
- python에서 리스트를 이용해 스택을 구현할 수 있다
stack = [] # 빈 스택 초기화
stack.append(4) # 스택 push(4)
stack.append(3) # 스택 push(3)
top = stack.pop() # 스택 pop
print(top) # 3!
2. queue
- 스택과 달리 선입선출(FIFO, First In First Out)방식으로 한쪽 끝에서 삽입, 다른 쪽 끝에서 삭제가 이루어짐 => 순서대로 처리해야 할 필요가 있는 일들(너비 우선 탐색, 은행 업무 등)
- 선입선출 방식이기 때문에 데이터가 삽입만 쪽을 back혹은 rear 삭제만 되는 쪽을 front라고 함
- enqueue(data) : back에 데이터 추가하기
- dequeue : front에서 데이터 뽑기
- peek : 제일 밑의 데이터 보기
- empty : 큐가 비어있는지 아닌지 확인
3. 파이썬 입력받기
- input
- 무조건 문자열로 반환, 숫자 계산을 하려면 int로 형변환을 해줘야함
str = input()
num = int(input())
- input.split()
- 문자열을 특정 구분자로 나눌 때 사용, 기본적으로 공백을 기준으로 나눠줌- 변수 여러개에 저장 가능하지만 문자열 상태이므로 숫자 계산할 때는 int를 사용해 정수로 변환해줘야 함 -> 매번 이러면 귀찮으니까 map(int, input().split()) 사용
# [python input split]
str = input().split()
>>> ['python', 'input', 'split']
s, t, r = input().split()
>>> python input split
# 1 2 3
num1, num2 = input().split()
str = num1 + num2
num = int(num1) + int(num2)
>>> 12
>>> 3
- map()
- map(변환 함수, 순회 가능한 데이터)
- 원본 리스트를 변경하지 않고 새로운 리스트를 생성
- map 객체(map object)를 반환하기 때문에 list나 tuple로 변환해야함
- 반복 가능한 객체(iterator object)를 반환
a, b, c = map(int, input().split())
>>> 1 2 3
b = map(str, input().split())
print(b)
print(list(b))
>>> <map object at 0x107d93a60>
>>> ['1', '2', '3']
- sys.stdin.readline()
- 대량의 데이터를 반복적으로 입력받을 때 input()대신 사용할 경우 속도가 향상됨(strip()이 적용되지 않아 개행문자까지 포함되기 때문에 input()보다 빠름)- 자바에서 Scanner보다 BufferedReader가 빠른 것과 같음
- import sys 선언이 필요
- 한 줄 단위로 입력받음 -> 한 개의 정수만 입력받을 때 \n도 같이 저장돼서 제거가 필요함
import sys
# 한 개의 정수를 입력 받아 저장할 때
read = int(sys.stdin.readline())
# 정해진 개수의 정수를 입력 받아 저장할 때
a, b, c = map(int, sys.stdin.readline().split())
# 임의의 개수의 정수를 입력받아 리스트에 저장할 때
data = list(map(int, sys.stdin.readline().split()))
# 임의의 개수의 정수를 n줄 입력받아 2차원 리스트에 저장할 때
data = []
n = int(sys.stdin.readline())
for i in range(n):
data.append(list(map(int,sys.stdin.readline().split())))
# 문자열 n줄을 입력받아 리스트에 저장할 때, strip()은 문자열 앞과 끝의 공백 제거
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
To-do List
알고리즘 4주차, java강의 조건문까지, 3주차 숙제
참고
Author And Source
이 문제에 관하여(내일배움캠프 25일차 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mindang/내일배움캠프-25일차-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)