본문 바로가기

코딩 농장/백준 문제

[백준 Python] 기초 개념, 스킬 모음

입력받기

input() 함수 사용

# 형 변환
int(input())

# 입력 받은 데이터를 split() 으로 나누고 int 로 저장 ( 1 2 를 입력받고 나눠 저장 )
a, b = map(int , input().split()) 

# 입력 받는 데이터를 split() 으로 나누고 int 로 arr 에 저장 ( 1 2 3 4 ... 을 입력 받고 배열에 저장 )
arr = [ int(x) for x in input().split() ]

import sys 사용

 

import sys

# 그냥 사용
a = sys.stdin.readline()

# input 을 변경해서 사용
input = sys.stdin.readline 
a = input()

 

기본 함수

# arr 의 길이 반환
arr = [1,2,3]
len(arr) # 3

# 형변환
a = int(num) # int
b = str(num) # string

Stack, Queue, Deque

from collections import deque

  • deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
  • deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
  • deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
  • deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
  • deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
  • deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
  • deque.remove(item): item을 데크에서 찾아 삭제한다.
  • deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).

 

열 관련

배열 초기화

# 배열 초기화 1
arr = [0 for i in range(10)] # 10개 원소  0으로 초기화

# 배열 초기화 2
arr = [0] * 10 # 10개 원소 0으로 초기화

 

배열 슬라이싱

str[시작 : 끝 : 주기] : 시작부터 끝까지 얼만큼씩 간다 

str = abcde

str[:] # 처음부터 끝까지 abcde

str[:2] # 처음부터 index 2 전까지 ab



str[::-1] # 끝부터 처음까지 거꾸로  edcba

str[1::-1] # index 1 부터 처음까지 거꾸로 ba

str[:2][::-1] # 처음부터 index 2 전까지 + 거꾸로 ba

정렬관련

sort(list) : 리스트를 정렬한다. ( 숫자 오름차순, 대문자, 소문자 순서 )

arr = [4, 3, 2, 1, 5]
arr.sort() # [1, 2, 3, 4, 5]

arr = [a, A, 1, 3]
arr.sort() # [1, 3, A, a]

# 2차원일 때는 key 설정 안하면 둘 다 순차적으로
arr = [[2, a], [1, b], [4, c], [3, d]]
arr.sort(key = lambda x:x[0]) # [[1, b], [2, a], [3, d], [4, c]] 첫번째 숫자로 정렬
arr.sort(key = lambda x:x[1]) # [[2, a], [1, b], [4, c], [3, d]] 두번째 알파벳으로 정렬
arr.sort() # 숫자로 정렬 후 알파벳으로 정렬