일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 os 구조
- 안드로이드 유닛테스트란
- Rxjava Observable
- 서비스 쓰레드 차이
- 안드로이드 유닛 테스트
- android retrofit login
- 2022 플러터 설치
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 사용법
- 안드로이드 라이선스
- 멤버변수
- 스택 큐 차이
- 안드로이드 레트로핏 crud
- jvm 작동 원리
- 자바 다형성
- 안드로이드 라이선스 종류
- 2022 플러터 안드로이드 스튜디오
- rxjava hot observable
- ar vr 차이
- 플러터 설치 2022
- jvm이란
- android ar 개발
- 큐 자바 코드
- ANR이란
- 스택 자바 코드
- 안드로이드 유닛 테스트 예시
- 객체
- 클래스
- rxjava cold observable
- rxjava disposable
- Today
- Total
목록알고리즘 문제 풀이/백준 (30)
나만을 위한 블로그
중간에 공백을 포함한 두 숫자를 입력받고, 이 숫자들의 합을 구해서 출력하는 백준의 기본 문제다.말로만 듣던 백준도 시작해보고, 유저로부터 입력을 받는 괜찮은 방법이 있어서 그 방법을 사용할 겸 문제를 풀어본다. fun main() { val (A, B) = readln().split(" ").map { it.toInt() } println(A + B)} readLine()도 있지만 readln()을 쓰면 입력 받기가 더 편하다. readln()의 리턴타입이 String이기 때문에 split 사용도 문제 없고, 숫자로 바꿔야 한다면 map을 통해 바꾸는 것도 가능하다.readLine(), readln()의 차이는 nullable 여부다. readln()은 null을 허용하지 않고, readLi..
4의 배수인 숫자만 입력으로 들어오고, "long" 글자 하나가 4라는 것, 공백 삽입에 주의하면 되는 문제다. 귀찮게 for문 쓰는 것보다 repeat를 사용한다. 그리고 long이 몇 개가 붙을지도 알 수 없으니 깡으로 String을 이어붙이는 것보다 StringBuilder를 활용하자. fun main() { val num: Int = readln().toInt() / 4 val sb = StringBuilder() repeat(num) { sb.append("long ") } val result = sb.append("int").toString() println(result) }
숫자와 숫자 사이에 공백이 있을테니 그걸로 split해서 리스트에 담은 다음, 결과 리스트에 담긴 요소들을 모두 더해서 출력하면 끝이다. fun main() { val list = readln().split(" ") println(list.sumOf { it.toLong() }) } Int로 제출하면 런타임 에러(NumberFormat)이라고 뜨면서 실패한다.
중간에 X가 섞인 경우의 처리를 어떻게 할지가 문제였다. fun main() { val count = readln().toInt() repeat(count) { val input = readln().split("") var score = 0 var sum = 0 input.map { if (it == "O") { score++ sum += score } else { score = 0 } } println(sum) } }
fun main() { val count = readln().toInt() val grade = readln().split(" ") val list = arrayListOf() for (i in grade) { list.add(i.toInt()) } val max = list.max() var result = 0.0 for (i in list) { result += (i.toDouble() / max.toDouble()) * 100 } println((result / count)) }
fun main() { val list = arrayListOf() repeat(10) { list.add(readln().toInt()) } val list2 = arrayListOf() for (i in list) { list2.add(i % 42) } println(list2.distinct().count()) }
fun main() { val list = arrayListOf() repeat(28) { list.add(readln().toInt()) } val result = arrayListOf() for (i in 1 .. 30) { if (i !in list) { result.add(i) } } println(result[0]) println(result[1]) }
fun main() { val list = arrayListOf() repeat(9) { list.add(readln().toInt()) } val max = list.max() val index = list.indexOf(max) + 1 println("$max $index") }
예제 출력대로 나오게 하려면 joinToString(" ")을 해야 하는데 깜빡 잊고 하지 않아서 삽질했다. fun main() { val two = readln().split(" ") val nums = readln().split(" ") println(nums.filter { it.toInt() < two[1].toInt() }.joinToString(" ")) }
사실 첫째 줄의 입력은 필요없다. 둘째, 셋째 줄만 있어도 충분히 풀 수 있다. 하지만 첫째 줄에 대한 코드를 적지 않고 제출하면 런타임 에러가 나면서 실패하니 어쩔 수 없이 썼다. fun main() { val intCount = readln().toInt() val nums = readln().split(" ") val wantFindNum = readln().toInt() println(nums.count { it.toInt() == wantFindNum }) }