백준 문제 : (1717) 집합의 표현
알고리즘 : Union-Find
문제 정리
- 집합 n+1개 ({0},{1},{2},…{n})
- 첫 줄에 n과 m이 주어짐
- n은 집합의 개수이며 m은 라인
- 각 라인은 [0 1(a) 3(b)], [1 7 1]가 같이 3개의 숫자를 전달
- 맨 앞의 숫자 0은 a와 b를 합치며 1은 두 집합이 같은 집합인지 판단하여 “YES, “NO”를 출력
백준 문제 : (1717) 집합의 표현
알고리즘 : Union-Find
[Leetcode :: Maximum Subarray]
정수 배열 nums
를 지정하면 합계가 가장 큰 연속적인 하위 배열(최소 1개를 포함)을 찾아 합계를 반환하십시오.
주어지는 배열은 A = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
로 구성돼 있다.
문제를 보면 하나의 배열안에 하위 배열들의 합을 구하는 것이라 단순하게 생각해도 반복문 2개로 풀 수 있을 것이다. A[0]
부터 시작되는 하위 배열들부터 A[1]~A[N-1]
로 시작하는 하위 배열들의 합 중에서 제일 큰 걸 고르면 되는데 이렇게 작성을 하면 시간 복잡도는 O(n^2^)으로 너무 느려진다.
클래스, 객체, 인터페이스 1에 이어 클래스, 객체, 인터페이스2 를 시작한다.
코틀린에서는 생성자를 주 생성자(primary constructor)
와 부 생성자(secondary constructor)
로 나눈다. 주 생성자는 단 한번만 선언할 수 있으며 부 생성자를 여럿 선언할 수도 있다.
정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp 또는 regex, rational expression) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히 펄과 Tcl은 언어 자체에 강력한 정규 표현식을 구현하고 있다. (출처 : 위키피디아)
코틀린 인터페이스는 자바8과 비슷하게 추상 메소드 뿐만 아니라 구현이 있는 메소드도 정의할 수 있다. 다만 인터페이스에는 아무런 상태(필드)도 들어갈 수 없다.
1 | interface Clickable { |
콜론(:)
을 붙여 클래스 확장과 인터페이스를 구현 모두를 처리한다.override
변경자는 @Override 애노테이션과 동일하게 오버라이드 표시를 하지만 오버라이드 시 반드시 사용
해야 한다.디폴트 함수
를 제공한다.
함수 정의와 호출 1에 이어 함수 정의와 호출 2를 시작한다.
확장 프로퍼티를 사용하면 기존 클래스 객체에 대한 프로퍼티 형식의 구문으로 사용할 수 있는 API를 추가할 수 있다. 확장 프로퍼티로 작성하면 아무 상태도 가질 수 없지만 (확장 함수와 같다) 코드를 더 짧게 작성할 수 있어서 편한 경우가 있다.
1 | val String.lastChar: Char |
코틀린에서는 코틀린만의 컬렉션을 만들지 않고 모두 자바의 컬렉션은 그대로 사용하고 추가적인 함수를 제공하고 있다. 컬렉션을 만들 때엔 대체적으로 컬렉션명 + Of
의 조합이다.
1 | val set = hashSetOf(1, 7, 53) |
코틀린의 기초 1에 이어 코틀린의 기초 2를 시작한다.
코틀린에서 enum은 소프트 키워드라 부르는 존재이다. enum은 class앞에 있을 때는 특별한 의미를 지니지만 다른 곳에서는 이름에 사용할 수 있다. 반면 class는 키워드이므로 이름으로 사용할 수 없다.
자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아니다. enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다.
1 | enum class Color ( |
Update your browser to view this website correctly. Update my browser now