일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서비스 쓰레드 차이
- 안드로이드 유닛 테스트 예시
- rxjava disposable
- 안드로이드 유닛 테스트
- 서비스 vs 쓰레드
- android ar 개발
- 안드로이드 라이선스
- rxjava hot observable
- 안드로이드 라이선스 종류
- ANR이란
- 스택 자바 코드
- 안드로이드 레트로핏 crud
- 멤버변수
- 자바 다형성
- android retrofit login
- 클래스
- 안드로이드 레트로핏 사용법
- Rxjava Observable
- 안드로이드 os 구조
- 2022 플러터 설치
- 플러터 설치 2022
- rxjava cold observable
- jvm이란
- 큐 자바 코드
- 객체
- 스택 큐 차이
- 2022 플러터 안드로이드 스튜디오
- jvm 작동 원리
- 안드로이드 유닛테스트란
- ar vr 차이
- Today
- Total
목록알고리즘 문제 풀이/백준 (30)
나만을 위한 블로그
이 문제도 브루트 포스 알고리즘을 써서 풀 수 있다. 카드 3장의 합이 M 이하면서 M에 가장 가까운 값을 찾아야 한다.반복문 3개를 사용해서 카드를 3개씩 선택하는 경우를 구현할 수 있다. fun main() { val (N, M) = readln().split(" ").map { it.toInt() } val cards = readln().split(" ").map { it.toInt() } var maxSum = 0 for (i in 0 until N) { for (j in i + 1 until N) { for (k in j + 1 until N) { val sum = cards[i] + cards[j] + cards[..
1을 포함한 벌집은 6개의 벌집이 감싸고, 그 밖의 벌집은 12개가 감싼다. 즉 벌집의 방들을 계층화하면 아래와 같다고 볼 수 있다. 1층 : 중앙 1개의 방2층 : 방 6개(2~7)3층 : 방 12개(8~19)4층 : 방 18개(20~37) 이런 식으로 n층의 방은 몇 개인지 구하려면 6n으로 구할 수 있다. 이를 바탕으로 주어진 숫자가 어떤 층에 속하는지 알면 최소 방의 개수를 몇 개나 지나야 하는지 알 수 있다. fun main() { val N = readln().toInt() if (N == 1) { println(1) return } var layer = 1 var maxRoomInLayer = 1 while (N > ma..
숫자가 주어지면 그 숫자의 가장 작은 생성자를 구하는 문제다. 주어진 숫자와 그 숫자의 일, 십, 백의 자리수 숫자를 더해서 분해합은 만들었지만 이후 로직을 짜지 못해서 풀지 못했다.아래는 풀이 코드다. fun main() { val n = readln().toInt() println(findSmallestConstructor(n))}fun findSmallestConstructor(n: Int): Int { for (i in 1 until n) { if (decompositionSum(i) == n) { return i } } return 0}fun decompositionSum(num: Int): Int = num + num..
소수는 1보다 크면서 약수가 1과 자기 자신뿐인 숫자를 말한다. 2번째 입력에서 이 소수의 숫자를 카운트해서 출력하면 된다. fun main() { val N = readln().toInt() val nums = readln().split(" ").map { it.toInt() } var primeCount = 0 for (num in nums) { if (isPrime(num)) { primeCount++ } } println(primeCount)}fun isPrime(x: Int): Boolean { if (x 소수 구하는 로직을 함수로 따로 뺐다. 소수면 true, 소수가 아니면 false를 리턴하는 함수로, 함수 ..
말이 긴데 결국 정리하면 3번 입력의 첫 번째 수(T)를 통해 티셔츠의 최소 묶음 수를 계산3번 입력의 두 번째 수(P)를 통해 펜의 최대 묶음 수를 계산 2가지를 계산해서 println()을 2번 써서 출력하면 된다. 티셔츠는 남아도 되는데 부족하면 안 되고, 펜은 참가자 수에 맞춰 정확하게 준비해야 하는 것에 주의한다. fun main() { val n = readln().toInt() // 총 참가자 수 val sizes = readln().split(" ").map { it.toInt() } // 티셔츠 사이즈별 신청 수 val (T, P) = readln().split(" ").map { it.toInt() } // 티셔츠 묶음, 펜 묶음 크기 var tshir..
피타고라스의 정리만 떠올린다면 어렵지 않게 풀 수 있다. 여러 입력을 받으면서 "0 0 0"을 받으면 프로그램이 종료되게 하는 것에 주의하면 된다. fun main() { while (true) { val list = readln() .split(" ") .map { it.toInt() } .sortedDescending() if (list == listOf(0, 0, 0)) { break } val left = list[0] * list[0] val right = (list[1] * list[1]) + (list[2] * list[2]) if (..
오름차순, 내림차순, 무작위로 배치된 숫자들 중 뭘 받냐에 따라 각각 다른 문자열을 리턴하면 된다. fun main() { val numbers = readln().split(" ").map { it.toInt() } var isAscending = true var isDescending = true for (i in 0.. numbers[i + 1]) { isAscending = false } } when { isAscending -> println("ascending") isDescending -> println("descending") else -> println("mixed") }} 오름차순..
받은 문자열의 각 글자들이 앞의 숫자만큼 늘어나고 있다. 아래는 StringBuilder를 사용한 풀이다. fun main() { val T = readln().toInt() val sb = StringBuilder() repeat(T) { val target = readln().split(" ") val S = target[0].toInt() val R = target[1] R.map { c -> repeat(S) { sb.append(c) } } sb.append("\n") } println(sb.toString())} 출력을 보면 두..
입력받은 문자열을 띄어쓰기 기준으로 split()한 다음, 빈 문자열을 제거하고 남은 리스트의 크기를 리턴하면 된다.빈 문자열을 필터링하는 로직이 없으면 통과가 되지 않으니 추가해 준다. fun main() { val a = readln().trim().split(" ").filter { it != "" } print(a.size)}
아래는 전체 코드다. fun main() { val t = readln().toInt() repeat(t) { val (h, w, n) = readln().split(" ").map { it.toInt() } val floor = if (n % h == 0) h else n % h val room = if (n % h == 0) n / h else n / h + 1 println("$floor${String.format("%02d", room)}") } } 문제의 조건은 아래와 같다. 각 층 왼쪽부터 차례대로 방이 있고 모두 비어있는 상태다손님은 1층부터 위쪽으로 방이 배정된다 (101 -> 201 -> 301 순)각 층이 모두 차면 그 다음 방 번호로 넘어간다 (6층이 최상층인 경우 101 -> 201..