*입력, 출력
파일에서 입력받기
#input.txt 안에 입력값 저장
import sys
sys.stdin=open("input.txt", "rt")
string=input()
숫자 입력 나눠서 받기
#8 3
n, m=map(int, input().split())
숫자 입력 한꺼번에 받기
#2 4 9 10 15 12
num=list(map(int, input().split()))
print(num)
output: [2, 4, 9, 10, 15, 12]
숫자 줄바꿈 받기
'''
4 11
802
743
457
539
'''
k, m=map(int, input().split())
Line=[]
res=0
for i in range(k):
tmp=int(input())
Line.append(tmp)
print(Line)
>>>[802, 743, 457, 539]
2차원 배열 받기
'''
1 2 3 4
8 7 6 5
9 1 2 3
4 5 8 3
2 1 0 2
'''
num=[list(map(int, input().split())) for _ in range(5)]
print(num)
output: [[1, 2, 3, 4], [8, 7, 6, 5], [9, 1, 2, 3], [4, 5, 8, 3], [2, 1, 0, 2]]
2차원 배열 이쁘게 출력하기
num=[list(map(int, input().split())) for _ in range(5)]
print(*num, sep='\n')
output:
[1, 2, 3, 4]
[8, 7, 6, 5]
[9, 1, 2, 3]
[4, 5, 8, 3]
[2, 1, 0, 2]
*자료구조
큐
from collections import deque
q = deque()
q.append(2)
print(q.popleft()) # 2
최소 힙
import heapq
q = []
heapq.heappush(q, (1, 'apple'))
print(heapq.heappop(q)[1]) # 'apple'
유틸리티 함수
문자를 ASCII로 변환
print(ord('a')) # 97
순열과 조합
배열로 순열 생성
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data, 3))
print(result) # [('A', 'B', 'C'), ('A', 'C', 'B'), ..., ('C', 'B', 'A')]
배열로 조합 생성
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data, 2))
print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
배열로 중복 생성
from itertools import product
data = ['A', 'B', 'C']
result = list(product(data, repeat=2))
print(result) # [('A', 'A'), ('A', 'B'), ..., ('C', 'C')]
*기타
list comprehension 을 사용한 리스트 값 필터링
arr = [7, 1, 2, 5, 4, 2, 0]
pivot = 3
left_side = [x for x in arr if x <= pivot]
print(left_side) # [1, 2, 2, 0]
튜플 리스트 정렬
arr = [('apple', 17), ('banana', 8), ('candy', 3)]
arr.sort(key=lambda x: x[1])
print(arr) # [('candy', 3), ('banana', 8), ('apple', 17)]
for 반복문 인덱스 가져오기
arr = ['a', 'b', 'c']
for i, char in enumerate(arr):
print(f'{i}: {char} ', end='') # 0: a 1: b 2: c
두 배열 tuple로 묶기
numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for pair in zip(numbers, letters):
print(pair, end='') # (1, 'A')(2, 'B')(3, 'C')
이진 탐색
from bisect import bisect_left, bisect_right
numbers = [1, 4, 6, 8, 11, 19]
target = 11
print(bisect_left(numbers, target)) # 4
print(bisect_right(numbers, target)) # 5
'알고리즘? > 기본3 탐색&시뮬레이션(string, 1차원 2차원 리스트 탐색)' 카테고리의 다른 글
11. 격자판 회문수 이해 못함 (0) | 2023.05.12 |
---|---|
10. 스도쿠 (0) | 2023.05.12 |
9. 봉우리 (0) | 2023.05.11 |
8. 곶감(모래시계) pop(),append(), 7번문제 응용 (0) | 2023.05.10 |
7. 사과나무 (다이아몬드 ) (0) | 2023.05.10 |