본문 바로가기

컴퓨터

(98)
[java] [Error] no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>) 이전에 포스팅했던 프로그래머스의 '최솟값 만들기'를 해결하며 마주했던 에러 사항이다. 다시 설명하자면, 기존에 알고있던 Arrays.sort()와 Arrays.sort(arr, Collections.reverseOrder())을 사용하여 정렬을 하려고 했는데 계속 에러가 났다. Comparator는 원시 타입의 int 배열에서는 사용할 수 없었던 것이 원인이었다. 하단 블로그를 참고하여 Integer[] Br = Arrays.stream(B).boxed().toArray(Integer[]::new); Arrays.sort(Br, Collections.reverseOder()); integer[]로 변환하였다. boxed - boxed()는 원시 타입에 대한 스트림 지원을 클래스 타입으로 전환해준다. in..
[java] stack 구현 자바에서 스택을 구현하려면 직접 구현하는 방법과 Stack 클래스를 사용하는 방법 두 가지가 있다. Stack 클래스를 사용하기 이전 직접 이해하고 구현할 줄도 알아야 하기 때문에 두 가지 방법 다 정리해 보려고 한다. 1. 직접 구현하기 1-1 배열로 구현 * search와 empty는 자바에서 지원해 주므로 여기서는 push, pop, peek만 구현한다. public class Stack{ int top; int size; int[] stack; public Stack(int size){ this.size = size; stack = new int[size]; top = -1; } public void push(int item){ stack[++top] = item; } public void pop..
[java] 문자열 한 글자 씩 자르기 java에서의 문자열 자르기는 두 가지의 방법이 있다. 1. split() split 함수는 특정 문자를 기준으로 문자열을 나누어 배열에 저장한 후 리턴한다. String s = "010-1111-2222"; String sArr = s.split("-");//["010", "1111", "2222"] String sArr2 = s.split("-", 2); // 배열의 크기 지정-> ["010", "1111-2222"] 2. charAt() charAt 함수는 문자열의 인덱스를 사용하기 때문에 for문을 이용한다. String s = "hello"; for(int i=0; i
[java] 배열 문법 정리 배열 - 배열 선언 시 미리 타입, 공간의 길이를 지정 -> 파이썬과 달리 유기적으로 늘어나지 않음. - 길이를 지정하지 않으면 컴파일 오류 발생 int[] arr = new int[3]; int arr1[] = {1,2,3,4}; int[] arr2 = {1,2,3,4}; String[] name = new String[3]; String[] name2 = {"one", "two"}; 자바의 출력문은 System.out.println()을 입력하여 배열을 출력한다면 메모리에 있는 배열의 주소값을 출력한다. 따라서 Arrays.toString()을 이용하여 배열을 출력해야한다. 2차원 배열의 경우 Arrays.deeptoString()을 이용하여 한 번에 출력할 수 있다. *Arrays는 java.uti..
[python] Tree 순회하기 1. python으로 트리를 구현할 때 dictionary를 사용하여 루트노드와 left, right를 저장한다. 2. 전위/ 중위/ 후위 순회는 재귀함수로 코드의 순서를 바꿔 구현한다. 다음과 같은 이진트리가 존재할 때 각각 전위/중위/후위 순회를 해본다면 다음과 같다. 1. 전위순회 : [루트 - 왼쪽 자식 - 오른쪽 자식] 순으로 순회 A - B - D - G - C - E - F 2. 중위순회 : [왼쪽 자식 - 루트 - 오른쪽 자식] 순으로 순회 G - D - B - A - E - C - F 3. 후위순회 : [왼쪽 자식 - 오른쪽 자식 - 루트] 순으로 순회 G - D - B - E - F - C - A python으로 트리 순회 구현 1991번: 트리 순회 (acmicpc.net) 1991번..
[python] heapq 파이썬의 heapq 모듈은 우선순위 큐 알고리즘의 구현을 제공한다. 따라서 heapq를 사용하여 최소힙과 최대힙을 구현할 수 있다. heappush(heap, item) 힙의 조건을 유지하며 item을 heap으로 push한다. heappop(heap) 힙의 조건을 유지하며 heap에서 가장 작은 item을 pop하고 반환한다. heap이 비어있다면 IndexError가 발생한다. 최소 힙 heapq는 기본적으로 최소 힙을 구현한다. 백준에 최소 힙을 구현하는 문제가 있어 적용하여 보았다. 1927번: 최소 힙 (acmicpc.net) 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가..
[python] Set() 집합 연산 Set은 수학에서 배웠던 집합과 같은 개념이다. 순서와 중복이 가능한 리스트와는 다르게 순서도 없고 중복을 허용하지 않는다. 수학의 연산과 같이 합집합, 교집합, 차집합 연산 기능을 각각 수행할 수 있다. 1. 합집합 - 합집합은 | 연산자와 union 함수를 이용한다. - 두개의 집합에서 중복되는 요소를 삭제한 후 새로운 집합을 반환한다. s1={1,2,3} s2={3,4,5} print(s1|s2)# {1,2,3,4,5} print(s2.union(s1))# {1,2,3,4,5} 2. 교집합 - 교집합은 & 연산자와 intersection 함수를 이용한다. - 두개의 집합에서 공통요소만을 포함해 새로운 집합을 반환한다. s1={1,2,3} s2={3,4,5} print(s1&s2)# {3} print..
[python] deque from collections import deque 그냥 리스트를 사용하는 것보다 deque를 사용하면 속도가 훨씬 빠르다. (O(1)) 리스트 함수와 거의 비슷하지만 deque에서 기억해야 할 함수를 보자면 다음과 같다. - appendleft() - extendleft() - popleft() - rotate() *양수값은 오른쪽으로 음수값은 왼쪽으로 회전 2164번: 카드2 (acmicpc.net) 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net

728x90