Programming58 코틀린(kotlin) - 우선순위큐(PriorityQueue) 정렬 기준 백준 또는 CodeForce 등을 풀다보면 우선순위 큐를 사용할 일이 많다. 이 때 우선 순위 큐에 들어가는 자료형이 Int, Double, String 등 한개로만 이루어져 있다면, 아무 조건없이 넣었을 때 오름차순으로 정렬될테고, reverseOrder() 명령어를 통해 역순으로 정렬할 수도 있다. val pq = PriorityQueue() pq.add(1) pq.add(2) pq.add(3) val rpq = PriorityQueue(reverseOrder()) rpq.add(1) rpq.add(2) rpq.add(3) /* pq -> 1, 2, 3 rpq -> 3, 2, 1 */ 하지만 자료형이 하나가 아닌, Pair 또는 Triple 혹은 데이터 클래스와 같은 것을 PriorityQueue의 .. Programming/Kotlin 2022. 8. 7. 파이썬: 리스트 내포(List Comprehension) 리스트 내포(List Comprehension) 파이썬에서는 for문과 if문을 한 라인에 작성하여 코드를 간결하고 직관적으로 만들며, 실행속도를 높혀주는 기법인 리스트 내포 기법이 존재한다. 형태는 다음과 같다. 리스트 명 = [표현식 for 변수 in 반복 가능한 대상] 예를 들면 다음과 같다. list = [i for i in range(20)] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 이렇게 하면, 0부터 19까지의 수가 리스트로 변환되게 된다. 처음에도 말했듯, 리스트 내포는 for문과 if문을 한 라인에 작성할 수 있다. 조건을 추가했을 떄의 형태는 다음과 같다. 리스트 명 = [표현식 for 변수 in 반복.. Programming/Pyhton 2022. 8. 2. 파이썬: 파일 입출력, with문 파일 생성하기 파일을 생성하는 방법 파이썬의 내장 함수인 open을 사용하는 것이다. f = open("파일명.txt", '파일 열기 모드') 파일 열기 모드의 종류를 알아보자. 파일열기모드 설명 r 읽기 모드 - 파일을 읽기만 할 때 사용한다. w 쓰기 모드 - 파일에 내용을 쓸 때 사용한다. a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용한다. 파일을 쓰기 모드로 열 때, 해당 파일이 존재하지 않으면 새로운 파일이 생성되고, 이미 존재하는 파일이라면 기존의 내용은 전부 삭제된 후, 처음부터 쓰게 된다. 만약 파일을 C:/user 디렉터리에 생성하고 싶다면 다음과 같이 하면 된다. f = open("C:/user/파일명.txt", '파일읽기모드') close() close 함수는 열려 .. Programming/Pyhton 2022. 8. 1. 파이썬: 함수(Function) 함수란? 카페에서 음료를 시키는 과정을 생각해보자. 우리는 키오스크 또는 직원에게 원하는 음료를 주문할 것이다. 이는 "입력값"이 된다. 또한 주문한 음료가 준비되서 나온다면, "출력값"으로 볼 수 있다. 카페에서 이러한 일이 일어나므로 카페라는 "함수"가 있다고 생각하면 된다. 중고등학교 때도 함수에 대해 배웠을 것이다. 예를 들어 y = x + 3도 함수이다. 이를 직선 그래프로만 배웠지, 프로그래밍의 함수와 연관지을 생각은 못했을 거싱다. 하지만 이 수식도 x의 값이 입력됨에 따라 y값이 출력되는 입력값과 출력값이 있는 함수이다. 함수를 사용하는 이유 프로그래밍을 하다보면 같은 내용을 반복해서 사용해야 할 때가 있다. 이 때 반복되는 부분을 한 뭉치로 묶어 "어떠한 입력값이 주어졌을 때, 어떤 결과.. Programming/Pyhton 2022. 7. 28. 파이썬: 반복문(for문, while문) 반복문 for문과 while문이 존재한다. 파이썬에서 이들이 어떻게 쓰이는지에 대해 알아보자. for문 파이썬의 직관적인 특징을 가장 잘 대변해 주는 것이 for문이다. for문의 기본 구조 for 변수 in 리스트(또는 튜플, 문자열 등): 수행할 문장1 수행할 문장2 ... 이는 리스트나 튜플, 문자열 등의 첫 번째 요소부터 마지막 요소까지 변수에 대입되고, 수행할 문장을 수행한다. >>> test = ['cat', 'dog', 'cow'] >>> for i in test: ... print(i) ... cat dog cow >>> test2 = [(1, 2), (3, 4), (5, 6)]: >>> for (first, second) in test2: ... print(first + second) ... Programming/Pyhton 2022. 7. 27. 파이썬: 조건문(if, elif, else) if문의 기본 구조 if 조건문: 수행할 문장1 수행할 문자2 ... else 수행할 문장A 수행할 문장B ... 조건문을 테스트하며 참이면 if문에 있는 문장을 수행하고, 거짓이면 else로 넘어가 그 안의 문장들을 수행한다. if문은 else문 없이 사용이 가능하나, else문은 if문 없이 사용이 불가능하다. 조건문 다음에 콜론(:)을 잊어선 안된다. 다른 언어에서는 if(조건문) { }의 구조를 가져 콜론이 필요하지 않다. 하지만 파이썬에서는 괄호를 쓰지 않고 콜론(:)을 쓰는 구조를 가지고 있으니, 빼먹지 않도록 주의해야 한다. 들여쓰기도 중요하다. if check: print("a") print("b") print("c") 다음과 같이 들여쓰기가 제대로 되있지 않다면, 이처럼 빨간 줄을 띄우며.. Programming/Pyhton 2022. 7. 26. 파이썬: 딕셔너리(dictionary), 셋(set) 딕셔너리(dirtionary) 딕셔너리는 리스트와 비슷하다. 다른 점은 항목의 순서를 따지지 않고, 오프셋을 이용해서 항목을 선택할 수 없다. 대신 값에 상응하는 고유한 키를 지정한다. 딕셔너리는 다른 언어들의 맵(map)과 같다. 맵과 같이 "키(key) - 값(value)" 쌍을 요소로 갖는 컬렉션이다. 딕셔너리 생성하기: { } 딕셔너리를 생성하기 위해서는 중괄호({ }) 안에 콤마로 구분된 키 : 값 쌍을 지정한다. { } 안에 아무 값도 없다면 빈 딕셔너리이다. >>> empty_dict = {} >>> empty_dict {} >>> dict = {1: 2, 2: 4, 4: 8} >>> dict {1: 2, 2: 4, 4: 8} 딕셔너리로 변환하기: dict( ) dict() 함수를 사용하면 .. Programming/Pyhton 2022. 7. 22. 파이썬: 리스트(list)와 튜플(Tuple) 리스트와 튜플 파이썬에는 두 가지 다른 시퀀스 구조인 튜플과 리스트가 있다. 이들 항목은 다른 타입이 될 수 있다. 즉, 각 요소는 어떤 객체도 될 수 있다. 리스트 리스트는 데이터를 순차적으로 파악하는데 유용하다. 특히, 내용의 순서가 바뀔 수 있고, 문자열과 달리 변경이 가능하다. 리스트의 현재 위치에서 새로운 요소를 추가하거나 삭제 혹은 기존 요소를 덮어쓸 수 있다. 또한 동일한 값이 여러번 나타날 수 있다. 리스트 생성: [ ] 또는 list() 리스트는 0 또는 그 이상의 요소로 만들어진다. 콤마(,)로 구분하고, 대괄호([ ])로 둘러싸여 생성된다. 또한 list 함수로 빈 리스트를 할당할 수 있다. # list 생성 >>> empty_list = [] >>> days = ['Monday', .. Programming/Pyhton 2022. 7. 21. 파이썬: 숫자, 변수, 문자열 변수, 이름, 객체 파이썬에서는 모든 것(부울, 정수, 실수, 문자열, 데이터 구조, 함수, 프로그램)이 객체로 구현되어 있다. 즉, 파이썬은 다른 언어에는 결여된 언어 일관성과 유용한 기능을 제공한다. 객체는 데이터와 함께 무엇을 처리할 수 있는지 결정하는 부울 혹은 정수와 같은 타입이다. 객체의 타입이 int라면, 또 다른 int를 더할 수 있다는 것을 의미한다. 타입은 데이터 값이 변수인지, 상수인지 판단할 수 있다. 파이썬은 객체의 타입을 바꿀 수 없는 강타입이다. 프로그래밍 언어에서는 변수를 선언하여 사용할 수 있다. 파이썬에서 변수에 값을 할당할 때 =를 사용한다. a = 7 변수는 단지 이름일 뿐이다. 할당한다는 의미는 값을 복사하는 것이 아닌, 데이터가 담긴 객체에 그냥 이름을 붙이는 것이.. Programming/Pyhton 2022. 7. 20. 코틀린(kotlin) - 리플렉션: 실행 시점에 코틀린 객체 내부 관찰 리플렉션을 간단하게 말하면 실행 시점에 동적으로 객체의 프로퍼티와 메소드에 접근할 수 있게 해주는 방법이다. 보통 객체의 메소드나 프로퍼티에 접근할 때, 컴파일러는 메소드나 프로퍼티의 이름이 실제로 가리키는 선언을 컴파일 시점에 찾아내 해당하는 선언이 실제 존재함을 보장한다. 하지만 타입과 관계없이 객체를 다뤄야 하거나 객체가 제공하는 메소드나 프로퍼티 이름을 오직 실행 시점에만 알 수 있는 경우라면 리플렉션을 사용해야 한다. 코틀린에서 리플렉션을 사용하기 위해선 두 가지의 다른 리플렉션 API를 다뤄야 한다. 첫 번째는 자바가 java.lang.reflect 패키지를 통해 제공하는 표준 리플렉션이다. 코틀린 클래스는 일반 자바 바이트코드로 컴파일되므로 자바 리플렉션 API도 코틀린 클래스를 컴파일한 바.. Programming/Kotlin 2021. 12. 26. 코틀린(kotlin) - 애노테이션 선언과 적용 애노테이션 적용 코틀린에선 자바와 같은 방법으로 애노테이션을 사용할 수 있다. 적용하려는 대상 앞에 애노테이션을 붙이는 것이다. 애노테이션은 @와 애노테이션 이름으로 이뤄지며 함수나 클래스 등 여러 다른 코드 구성 요소에 붙일 수 있다. import org.junit.* class MyTest { @Test fun testTrue() { Assert.assertTrue(true) } } 애노테이션에 인자를 넘길 때는 일반 함수와 마찬가지로 괄호 안에 인자를 넣는다. @Deprecated("Use removeAt(index) instead.", ReplaceWith("removeAt(index)")) fun remove(index: Int) { ... } 이런 remove 함수 선언이 있다면 remove를.. Programming/Kotlin 2021. 12. 19. 코틀린(kotlin) - 애노테이션 선언과 적용 에노테이션 적용 코틀린에선 자바와 같은 방법으로 애노테이션을 사용할 수 있다. 적용하려는 대상 앞에 애노테이션을 붙이는 것이다. 애노테이션은 @와 애노테이션 이름으로 이뤄지며 함수나 클래스 등 여러 다른 코드 구성 요소에 붙일 수 있다. import org.junit.* class MyTest { @Test fun testTrue() { Assert.assertTrue(true) } } 애노테이션에 인자를 넘길 때는 일반 함수와 마찬가지로 괄호 안에 인자를 넣는다. @Deprecated("Use removeAt(index) instead.", ReplaceWith("removeAt(index)")) fun remove(index: Int) { ... } 이런 remove 함수 선언이 있다면 remove를.. Programming/Kotlin 2021. 12. 19. 이전 1 2 3 4 5 다음 728x90