파이썬 927

[그리디] 이코테 (파이썬) 큰 수의 법칙

[문제] '큰 수의 법칙'은 일반적으로 통계 분야에서 다루어지는 내용이지만 동빈이는 본인만의 방식으로 다르게 사용하고 있다. 동빈이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 인 46이 된다. ... ... 생략 ... 배열의 크기 N, 숫자가 더해지는 횟..

[그리디] 이코테 (파이썬) 1이 될 때까지

[문제] 어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. 예를 들어 N이 17, K가 4라고 가정하자. 이때 1번의 과정을 한 번 수행하면 N은 16이 된다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 된다. 결과적으로 이 경우 전체 과정을 실행한 횟수는 3이 된다. 이는 N을 1로 만드는 최소 횟수이다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. [입력 조건] 첫째 줄에 N(2

[파이썬] collections 모듈(deque, Counter)

collections 모듈은 파이썬의 내장 모듈인데, 다양한 자료구조인 list, tuple, dictionary 등을 확장하여 제작된 모듈이다. 기본적으로 collections 모듈은 deque, Counter, namedtuple, defaultdict, OrderedDict 등을 제공한다. deque는 연속적으로 나열된 데이터의 시작 부분이나 끝 부분에 데이터를 삽입하거나 삭제할 수 있다. 또한, deque는 stack이나 queue 자료구조의 대용으로 사용될 수 있다. 아래의 표는 deque를 통해 원소를 삽입하거나 삭제하는 메서드이다. 메서드 설명 시간 복잡도 appendleft(a) 원소 a를 첫 번째 인덱스에 삽입 O(1) append(a) 원소 a를 마지막 인덱스에 삽입 O(1) pople..

[파이썬] heapq

heapq 라이브러리는 힙(Heap) 기능을 다룰 수 있도록 해준다. 파이썬에서의 힙은 최소 힙(Min Heap)으로 구성되어 있으며, 원소를 Heap에 모두 삽입했다가 빼는 것만으로도 시간 복잡도 O(NlogN)에 정렬을 수행할 수 있다. 기본적으로 Heap에 원소를 삽입할 때 사용하는 메서드는 heapq.heappush( ) 이고 Heap에서 원소를 빼낼 때 사용하는 메서드는 heapq.heappop( ) 이다. 아래는 heapq를 통해 원소들을 오름차순으로 정렬한 예제이다. [오름차순 예제] import heapq def heapsort(i): number = [] result = [] for value in i: heapq.heappush(number, value) for i in range(le..

[파이썬] 리스트 기본 메서드

리스트에서 사용할 수 있는 기본적인 메서드들은 다음과 같다. 메서드 사용 방식 설명 시간 복잡도 append( ) 변수명.append( ) 리스트에 원소를 하나 삽입한다. O(1) sort( ) 변수명.sort( ) 오름차순으로 정렬 O(NlogN) 변수명.sort(reverse = True) 내림차순으로 정렬 reverse( ) 변수명.reverse( ) 리스트의 원소 순서를 뒤집는다. O(N) remove( ) 변수명.remove(특정 값) 특정 값을 갖는 원소를 제거한다. O(N) insert( ) 변수명.insert(삽입할 위치 인덱스, 삽입할 값) 특정한 인덱스에 원소를 삽입한다. O(N) count( ) 변수명.count(특정 값) 리스트에서 특정 값을 가지는 데이터의 개수 O(N) 여기서 r..

[파이썬] round( ) 함수

컴퓨터 시스템은 수 데이터를 처리할 때 2진수를 사용하고, 부동 소수점 방식을 이용하여 실수를 처리한다. 하지만, 실수형을 저장하기 위해 4byte나 8byte의 고정된 크기의 메모리를 할당하기 때문에 대개 실수 정보를 표현하는 정확도에 한계를 가진다. 예를 들어, 0.7 + 0.2의 결과값은 0.9이지만, 컴퓨터 시스템 내에서 수행해보면 0.8999999999999999 의 값이 나온다. 이러한 문제를 해결하기 위해 round( ) 함수를 사용할 수 있다. round( ) 함수 사용법 >> round(실수형 데이터, 반올림하고자 하는 위치 -1 ) [예제] a = 0.7 + 0.2 print(a) print(round(a, 4)) [결과]