[Python] 백준 1920 - 수 찾기
·
Algorithm
문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 정답 import sys n = int(sys.stdin.readline()) a = set(map(int, sys.stdin.readline().spli..
[Kotlin] null 처리
·
개발 타임캡슐/Kotlin
null 코틀린에서는 null값을 허용하지 않는다. //초기화하지 않아 에러 발생 val a : String //null값으로 초기화해서 에러 발생 val a : String = null //OK val a : String? = null #코틀린에서 null값을 허용하려면 자료형의 오른쪽에 ? 기호를 붙여주면 된다. lateinit lateinit var a : String a = "hello" println(a) #안드로이드 개발 시 초기화를 나중에 할 경우가 있다. 이때 lateinit 키워드를 변수 선언 앞에 추가하면 된다. lateinit 사용 조건 #var 변수에서만 사용가능 #null값으로 초기화할 수 없다. #초기화 전에는 변수를 사용할 수 없다. #Int, Long, Double, Floa..
[Kotlin] 인터페이스
·
개발 타임캡슐/Kotlin
인터페이스 인터페이스는 추상 클래스와 비슷하지만 단일 상속만 되는 클래스와는 다르게 다중 구현이 가능하다. 인터페이스의 선언 interface Runnable { fun run() fun fastRun() = println("빨리 달린다") } #추상메서드는 abstract 키워드가 필요한데 인터페이스에서는 생략 가능하다. 인터페이스는 구현이 없는 메서드뿐만 아니라 구현된 메서드도 포함 가능하다. 인터페이스의 구현 class Human : Runnable { override fun run(){ println("달린다") } } #인터페이스를 구현할 때는 인터페이스 이름을 : 뒤에 적는다. 그리고 미구현 메서드를 작성한다. 이때 override 키워드를 메서드 앞에 추가한다. 상속과 인터페이스를 함께 구현..
[Kotlin] 클래스
·
개발 타임캡슐/Kotlin
클래스 선언 //클래스 선언 class Person { } //인스턴스 생성 val person = Person() #클래스는 붕어빵 틀에 , 인스턴스는 붕어빵에 비유할 수 있다. 자바에서는 new키워드를 사용해 객체를 생성하지만 코틀린에서는 사용하지 않는다. 생성자 class Person(var name: String) { } # 빈 생성자를 가지는 클래스 class Person { constructor(name: String) { println(name) } } #생성자에서 초기화 코드를 작성하려면 constructor로 생성자를 표현하고 블록에 코드를 작성한다. 이 생성자는 name을 출력한다. class Person(name: String) { init{ println(name) } } #위 코드..
[Python] 이분 탐색
·
Algorithm/Python
이분 탐색 알고리즘 def binary_search(a, x): start = 0 end = len(a) - 1 while start a[mid]: start = mid + 1 else: end = mid - 1 return -1 d = [1, 4, 9, 16, 25, 36, 49, 64, 81] print(binary_search(d, 36)) print(binary_search(d, 50)) #1 중간 위치를 찾는다. #2 찾는 값과 중간 값을 비교한다. #3 같다면 위치번호를 돌려주고 #4 찾는 값이 중간 값보다 크면 중간 위치의 오른쪽을 대상으로 다시 탐색(1번부터 다시) #5 찾는 값이 중간 값보다 작다면 중간 위치의 왼쪽을 대상으로 다시 탐색(1번부터 다시)
[Kotlin] 제어문(if, when, for, while)
·
개발 타임캡슐/Kotlin
if val a = 10 val b = 20 var max = a if (a b){ max = a } else{ max = b } val max = if (a > b) a else b #if문을 식처럼 사용할 수도 있다. when val x = 1 when (x) { 1 -> println("x == 1") 2, 3 -> println("x == 2 or x == 3") in 4..7 -> println("4부터 7사이") !in 8..10 -> println("8부터 10사이가 아님") else -> { print("x는 1이나 2가 아님") } } # when은 다양한 방법으로 사용가능하다. val num..