본문 바로가기

Python265

[Python] 파이썬 자료형(리스트/튜플/사전/집합) 정리 이번 포스팅에서는 리스트와 튜플만으로는 시간복잡도를 해결할 수 없는 문제를 많이 접하다보니 Python에서 제공하는 여러 자료형과 관련 함수들을 활용하기 위해 정리하고자 한다. 1) 리스트(List) 자료형 (배열/테이블) 📝 List는 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용 파이썬의 리스트 자료형은 C나 자바와 같은 프로그래밍 언어의 ‘배열’ 기능을 포함하고 있으며, 내부적으로 연결 리스트 자료구조를 채택하고 있어서 append(), remove() 등의 메소드를 지원한다. 1-1) 리스트 만들기 리스트는 대괄호[] 안에 원소를 넣어서 초기화하며, 쉼표로 원소를 구분한다. 비어있는 리스트를 선언하고자 할 때는 list() 또는 [] 를 이용할 수 있다. 코딩 테스트 문제에서는 주로 크기.. 2023. 2. 22.
[백준 1920번] 수 찾기(이진 탐색) import sys input = sys.stdin.readline n = int(input()) array_n = sorted(list(map(int,input().split()))) m = int(input()) array_m = list(map(int,input().split())) def binary_search(array,target,start,end): while start target: end = mid - 1 else: start = mid + 1 return 0 for i in array_m: print(binary_search(array_n,i,0,n-1)) 이번 문제는 이전에 정렬 알고리즘에서 다루었지만, 출제자가 원하는 것은 이분 탐색 알고리즘을 사용하여 푸는 것이고 무엇보다 이진탐.. 2023. 2. 22.
[백준 2309번] 일곱 난쟁이 from itertools import combinations array = [0]*9 for i in range(9): array[i] = int(input()) remain = sum(array)-100 com_list = list(combinations(array,2)) for i in com_list: if sum(i) == remain: array.remove(i[0]) array.remove(i[1]) break array.sort() for i in array: print(i) 이번 문제는 정렬보다는 9명의 난쟁이 중 키의 합이 100이 되도록 만드는 조건을 구현하는 것이 관건인 문제였다. 문제에서 일곱 난쟁이를 찾을 수 없는 경우는 없다는 조건이 주어졌기 때문에, 무조건 난쟁이 7명이상은 .. 2023. 2. 22.
[Python] 순열과 조합 라이브러리 itertools 0) itertools 라이브러리 itertools에서 제공하는 클래스는 매우 다양하지만, 코딩테스트에서 가장 유용하게 사용할 수 있는 클래스는 permutations(순열)과 combinations(조합)이다. - permutations(순열)은 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우를 계산해준다. - combinations(조합)은 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우를 계산한다. ⇒ 두 개 모두 클래스이므로 객체 초기화 이후에는 '리스트 자료형'으로 변환하여 사용한다 ! 1. 순열(Permutations) from itertools import permutations print(list(.. 2023. 2. 22.
[백준 11651번] 좌표 정렬하기 2 import sys input = sys.stdin.readline n = int(input()) array = [] for i in range(n): x, y = map(int,input().split()) array.append((x,y)) array.sort(key=lambda x:x[0]) array.sort(key=lambda x:x[1]) for i in array: print(f"{i[0]} {i[1]}") 2023. 2. 21.
[백준 10814번] 나이순 정렬 import sys input = sys.stdin.readline n = int(input()) array = [] for i in range(n): age, name = list(input().split()) array.append((int(age),name,i)) array.sort(key=lambda x:x[2]) array.sort(key=lambda x:x[0]) for i in range(n): print(f"{array[i][0]} {array[i][1]}") 2023. 2. 21.