반응형

코딩테스트/기타 51

[Python] 코딩테스트에 꼭 필요한 파이썬 문법

# nxm 크기의 2차원 배열 n, m = map(int, input().split()) arr = [[0]*m for _ in range(n)] # 리스트에서 특정 값을 가지는 원소를 모두 제거하기 a = [1, 2, 3, 4, 5, 5, 5] remove_set = {3,5} result = [i for i in a if i not in remove_set] # 문자열 연산 a = "String" print(a*3) # 문자열 여러번 출력 # StringStringString a = "ABCDEF" print(a[2:4]) # 문자열 슬라이싱 # CD # 사전 자료형 a = dict() a['홍길동'] = 97 a['이순신'] = 98 b = { '홍길동':97, '이순신':98 } key_list ..

[Python] 파이썬 표준 라이브러리

실전에서 유용한 표준 라이브러리 1. 내장 함수: 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공합니다. 파이썬 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있습니다. 2. itertools: 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공합니다. 특히 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용됩니다. 3. heapq: 힙(Heap) 자료구조를 제공합니다. 일반적으로 우선순위 큐 기능을 구현하기 위해 사용됩니다. 4. bisect: 이진 탐색(Binary Search) 기능을 제공합니다. 5. collections: 덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함합니다. 6. math: 필수적인 수학적 기능을 제공합니다...

[Python] 수행 시간 측정 소스코드 예제

알고리즘 문제 해결에 있어서 시간 복잡도를 측정하기 위한 파이썬 코드입니다. import time start_time = time.time() # 측정 시작 # 프로그램 소스코드 end_time = time.time() # 측정 종료 print("time:", end_time - start_time) # 수행 시간 출력 시간제한(수행시간 요구사항)은 알고리즘 설계에 있어서 중요한 확인사항입니다. 시간제한이 1초인 문제를 만났을 때, 일반적인 기준은 다음과 같습니다. N

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdzdbuv%2FbtrgoqxjxEh%2FDm7uqWY9HA9z5cdS7KgfUK%2Fimg.png')"

[Python] 달팽이 배열

달팽이 배열이란? nxn 배열에 1부터 n^2까지의 자연수를 달팽이 집 모양으로 채우는 문제입니다. 4x4 배열을 예로 들자면 아래와 같이 규칙성이 있게 숫자가 채워지게 됩니다. 위 내용을 nxn 배열로 확장하여 생각해보면, 전진하는 양은 다음과 같습니다. n -> n-1 -> n-1 -> n-2 -> n-2 -> n-3 -> n-3 -> ..... -> 1 -> 1 출처: https://codepractice.tistory.com/81 달팽이 배열 달팽이 배열은 $n \times n$ 배열에 $1$부터 $n^2$ 까지의 자연수를 달팽이 집 모양으로 채우는 문제이다.다음 그림은 $4 \times 4$ 배열에서의 숫자를 채워 나가는 방향과 결과로 얻어지는 배열을 보여 codepractice.tistory...

[Python] 최소 힙(Min Heap)과 최대 힙(Max Heap)

1. 최소 힙(Min Heap) 파이썬의 힙은 최소 힙(Min Geap)으로 구성되어 있으며, 보통 최소 힙 자료구조의 최상단 원소는 항상 '가장 작은' 원소입니다. 그러므로 단순히 원소를 힙에 전부 넣었다가 빼는 것만으로도 시간 복잡도 O(NlogN)에 오름차순 정렬이 완료됩니다. import heapq def heapsort(iterable): h = [] result = [] # 모든 원소를 차례대로 힙에 삽입 for value in iterable: heapq.heappush(h, value) # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기 for i in range(len(h)): result.append(heapq.heappop(h)) return result result = heapsort..

[Python] 입출력

1. input()을 이용하여 입력받는 경우 여러 개의 데이터를 입력받을 때 데이터가 공백으로 구분되는 경우가 많습니다. 그래서 입력받은 문자열을 띄어쓰기로 구분하여 각각 정수 자료형의 데이터로 저장하는 코드의 사용 빈도가 매우 높습니다. # 데이터의 개수 입력 n = int(input())# 5 # 각 데이터를 공백으로 구분하여 입력 data = list(map(int, input().split()))# 65 90 75 34 99 data.sort(reverse=True) print(data)# [99, 90, 75, 65, 34] # n, m, k를 공백으로 구분하여 입력 n, m, k = map(int, input().split())# 3 5 7 print(n, m, k)# 3 5 7 2. read..

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdM2qac%2FbtrdaFXXtfq%2F3HOOXVB6ksR44SOekzA4V0%2Fimg.png')"

[C/C++] 피보나치 수열 알고리즘(피사노 주기)

피보나치 수열(Fibonacci Sequence)은 단순한 단조 증가(monotonically increasing) 수열로, 0번째 항은 0, 1번째 항은 , 그 외 항은 전 항과 전전 항의 합으로 표현됩니다. 피보나치 수열은 재귀 함수의 활용이나 동적 계획법을 연습하는 데 흔히 사용됩니다. 피보나치 수열을 해결하는 6가지 방법에 대해 알아보겠습니다. 1. 재귀적 방법 int fibonacci(int n) { if(n==0) return 0; else if(n==1) return 1; else return fibonacci(n-1)+fibonacci(n-2); } 위 알고리즘의 시간 복잡도는 O(2^n) 입니다. 함수가 한 번 호출되면 다시 두 번 호출되기 때문에 시간 복잡도가 지수적으로 증가하게 됩니다..

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFTF3y%2FbtrdcN1Rl4e%2FVa81Kd9LkpBICsHzF6PQYK%2Fimg.png')"

[C/C++] 소수 구하기(에라토스테네스의 체)

소수(Prime Number)란 '양의 약수를 두 개만 가지는 자연수'를 말합니다. 이런 소수(Prime Number)를 구하기 위한 방법으로 가장 대표적인 것이 '에라토스테네스의 체' 입니다. '에라토스테네스의 체'를 이용하면 대량의 소수를 빠르고 정확하게 구할 수 있습니다. 1. 간단하게 소수를 판별하는 알고리즘 1 #include using namespace std; int isPrimeNumber(int x) { for(int i=2;i

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foh7yE%2Fbtq8lYNMSIl%2FJdmifUl10PIdsEuACPoOCk%2Fimg.png')"

[C++] lower_bound(), upper_bound() 함수

1. lower_bound()와 upper_bound()의 소개 lower_bound(하한)와 upper_bound(상한)는 C++의 내장 함수로, 이진 탐색으로 구현이 되어 있습니다. 이진 탐색은 배열이 이미 정렬된 상태에서 적용되므로, 위 함수들을 사용할 때에도 정렬된 상태에서 적용되어야 합니다. lower_bound()와 upper_bound()는 이진 탐색과 같은 시간복잡도 O(log2)를 갖습니다. 2. lower_bound() 하한은 특정 값 k보다 같거나 큰 값이 처음 나오는 위치의 주소가 됩니다. 즉, k값 이상인 값이 처음 나오는 곳의 주소를 말합니다. 함수의 형태는 다음과 같습니다. lower_bound(배열의 시작, 배열의 끝, 특정 값 k) 3. upper_bound() 상한은 특정..

[C언어/C++] isspace 함수

1. isspace 함수란? C언어와 C++에서 해당 문자가 공백문자인지를 확인하는 함수입니다. 헤더파일 C언어: C++: 함수 원형 int isspace(int c); 매개변수: 공백인지 아닌지를 판단할 값을 인자로 넣습니다. 반환형: 공백이면 0이 아닌 수 반환, 공백이 아니면 0을 반환합니다. 2. isspace가 공백이라고 판단하는 것들 " " = 공백(스페이스) "/n"= 개행 "/t"= 수평 탭 "/v"=수직 탭 "/f"=피드 "/r"=캐리지 리턴 3. isspace 함수 예제 #include using namespace std; int main() { //스페이스 char c1=' '; cout

반응형