Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 멤버변수
- 안드로이드 라이선스 종류
- 서비스 vs 쓰레드
- 안드로이드 라이선스
- 클래스
- 스택 자바 코드
- 스택 큐 차이
- 안드로이드 os 구조
- 안드로이드 레트로핏 사용법
- 2022 플러터 안드로이드 스튜디오
- jvm이란
- ar vr 차이
- 안드로이드 유닛 테스트 예시
- 2022 플러터 설치
- 서비스 쓰레드 차이
- android retrofit login
- 객체
- 안드로이드 유닛테스트란
- jvm 작동 원리
- rxjava hot observable
- 큐 자바 코드
- 플러터 설치 2022
- 자바 다형성
- rxjava disposable
- 안드로이드 유닛 테스트
- Rxjava Observable
- ANR이란
- rxjava cold observable
- 안드로이드 레트로핏 crud
- android ar 개발
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 코틀린 알고리즘 문제풀이 팁 사이트 모음 본문
728x90
반응형
검색하기 귀찮아서 따로 모았다. 자세한 내용은 해당 링크로 들어가서 확인하면 될 것 같다.
Scanner 장점
- nextInt(), nextLine() 등으로 입력받은 값의 자료형을 쉽게 지정할 수 있다
- 띄워쓰기로 구분된 Integer도 nextInt()로 가공할 수 있다
Scanner 단점
- 키보드 입력을 바로 전송하는 원리라서 느리다
BufferedReader 장점
- 버퍼에 저장해놓고 전송하는 방식이라 빠름
BufferedReader 단점
- 수많은 보일러 플레이트 코드 존재
- 띄어쓰기로 구분된 값을 가공하는 등 경우에 따라 StringTokenizer를 써야 함
결론 : BufferedReader 써라
import java.util.StringTokenizer
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val arr = ArrayList<Int>()
val st = StringTokenizer(readLine())
while (st.hasMoreTokens()) {
arr.add(st.nextToken().toInt())
}
println("Contents Of an Array: $arr")
}
// input: 10 20 30 40 50
// output: Contents Of Array: [10, 20, 30, 40, 50]
BufferedReader는 readln()을 써서 더 간결하게 구현할 수 있다. 이걸 쓰면 with()을 쓰지 않아도 된다
fun main(args: Array<String>)) {
val name = readln()
val age = readln().toInt()
println("name: $name, age: $age")
}
첫 줄에 점의 개수, 그 다음줄부터는 x, y좌표를 차례대로 입력받는 코드가 있을 때 StringTokenizer를 쓰지 않고 람다식으로 간결하게 표현 가능하다
fun main(args: Array<String>) {
val n = readln().toInt()
val dots = ArrayList<Dot>()
repeat(n) {
val (x, y) = readln().split(" ").map { it.toInt() }
dots.add(Dot(x, y))
}
println(dots)
}
data class Dot(val x: Int, val y: Int)
// output: [Dot(x=0, y=0), Dot(x=0, y=1), Dot(x=3, y=4), Dot(x=5, y=7)]
https://wonnyhouse.tistory.com/246
한 줄에 2개 이상의 수가 띄어쓰기를 하며 들어왔다면 어떻게 해야 하는가? 첫째는 (n, m)을 입력받는다던지 배열에 저장할 값들이 아닌 경우, 둘째는 입력된 값들을 배열에 저장할 때다
4-1처럼 입력된 경우 아래처럼 값을 입력받으면 된다. 들어온 값을 띄어쓰기 기준으로 split()하고 toInt()로 Int로 바꾸는 것이다
val (n, m) = br.readLine().split(' ').map { it.toInt() }
3개의 수도 입력받을 수 있다
val (a, b, c) = br.readLine().split(' ').map { it.toInt() }
1 1 0 1 1 0 0 1 1 처럼 입력된 경우 그냥 split()만 쓰면 된다
var list = br.readLine().split(' ')
2차원 배열을 첫째 줄처럼 선언할 수 있다. 크기 5의 배열이며 Int형이다. 아래처럼 for문을 쓰면 indices를 썼기 때문에 인덱스가 출력된다
val temp = Array(5) { ArrayList<Int>() }
temp[0].add(3)
temp[0].add(8)
temp[0].add(-1)
for (i in temp[0].indices) {
println(i)
}
아래처럼 짜면 인덱스의 값들이 출력된다
val temp = Array(5){ArrayList<Int>()}
temp[0].add(3)
temp[0].add(8)
temp[0].add(-1)
for(i in temp[0]){
println(i)
}
https://gyubgyub.tistory.com/3
for (i in 0..9) : i가 0~9까지 총 10번 반복
for (i in 0..9 step 3) : i가 0~9까지 3씩 증가
for (i in 9 downTo 0) : i가 9~0까지 감소
for (i in 'a'..'e') : i가 'a'부터 'e'까지 증가
for (i in 1 until 100) : i가 1부터 99까지. 뒤 숫자에 -1한 숫자까지만 반복됨
forEach {} : 리스트의 요소들을 하나씩 꺼내 반복처리
map {} : 컬렉션 안의 인자들을 변환해서 반환
mapIndexed {} : 컬렉션에 포함된 인자의 인덱스 값을 변환해서 사용
filter {} : 리스트 안의 인자 중 조건에 일치하는 인자만 필터링
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Algorithm] 브루트 포스(Brute Force) 알고리즘이란? (0) | 2024.06.07 |
---|---|
[Algorithm] 유클리드 호제법이란? (Kotlin) (0) | 2023.01.20 |
[Algorithm] 최소값, 최대값 구하기 (0) | 2022.12.05 |
[Algorithm] 합 / 곱 구하기, 값 누적하기 (0) | 2022.11.24 |
[Algorithm] 시간 복잡도란? 공간 복잡도란? 빅 오 표기법이란? (0) | 2022.11.23 |
Comments