백준 알고리즘 파이썬(Python) 1158번 요세푸스 문제
2021. 7. 28. 11:42
Algorithm
1부터 n까지 순서대로 사람을 앉힌 다음에 index번호가 k-1인 사람을 제거 후 temp += k-1 을 통해 temp를 늘려가며 제거한다. 하지만 그러다 보면 temp가 리스트의 len을 넘어가는 순간이 올 수 밖에 없다. (우리가 쓰는 리스트는 원형이 아니므로) 그럴땐 전체 temp를 리스트의 len으로 나눈 나머지의 값으로 temp을 되돌려 놓는다. 그렇게 하면 원형으로 돌아가며 제거하는 것과 같은 효과를 낸다. 코드 n, k = map(int, input().split()) arr = [i for i in range(1, n + 1)] answer = [] num = k - 1 for i in range(n): if len(arr) > num: answer.append(arr.pop(num))..
백준 알고리즘 파이썬(Python) 11279번 최대 힙
2021. 7. 28. 10:37
Algorithm
파이썬의 heapq(힙 큐) 내장 모듈을 사용하여 푸는 문제이다. heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공한다. 이진트리 기반의 최소 힙을 그림으로 쉽게 나타내면 다음과 같다. heapq 모듈의 heappush() 함수를 이용하여 힙에 원소를 추가할 수 있다. 첫 번째 인자는 원소를 추가할 대상 리스트이며 두 번째 인자는 추가할 원소를 넘긴다. heapq.heappush(heap, 4) heapq.heappush(heap, 1) heapq.heappush(heap, 7) heapq.heappush(heap, 3) print(heap) #출력값 -> [1, 3, 7, 4] heapq 모듈의 heappop() 함수를 이용하여 힙에서 원소를 삭제할 ..
컬렉션 프레임워크
2021. 7. 27. 19:14
JAVA
컬렉션 프레임워크란? java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재한다. 자료구조 클래스들을 컬렉션 프레임워크라고 한다. 자료구조란 자료를 저장할 수 있는 구조 책을 보관하기 위해서 책장을 이용하는 것처럼 다양한 자료들을 다양한 방식으로 관리하기 위한 방법이 필요한데, 이러한 방법을 제공하는 것을 자료구조, 컬렉션 프레임워크이다. 컬렉션 프레임워크에서 가장 기본이 되는 interface는 Collection인터페이스 Collection인터페이스는 여기에 자료가 있다는 것을 표현. 중복도 허용하고, 자료가 저장된 순서도 기억하지 못하는 것이 Collection인터페이스. Collection이 가지고 있는 대표적인 메소드는 add(), size(), iterator() 메소드 ..
ArrayList(어레이 리스트)
2021. 7. 27. 15:34
JAVA
ArrayList란? ArraytList란 List 인터페이스를 상속받는 클래스로 크기가 가변적으로 변한다는 특징이 있다. 일반적인 array 같은 순차리스트이며 인덱스를 이용하여 객체들을 관리한다는 것은 배열과 유사하지만 한번 생성되면 크기가 변하지 않은 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어난다는 특징을 가지고 있다. ArrayList 선언 ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다. ArrayList members = new ArrayList();//타입설정 Student객체만 사용가능 ArrayList num = new ArrayList();//타입설정 int타입만..
Wrapper Class (래퍼 클래스)
2021. 7. 23. 16:54
JAVA
우선 래퍼 클래스(wrapper class)란 무엇인가? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나뉜다. 대표적인 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 우리가 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 순간이 온다. 이럴 때에 기본 자료 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다. 자바의 모든 기본 타입은 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에다가 두고 포장하기 때문이..