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 |
Tags
- 안드로이드 유닛테스트란
- 스택 자바 코드
- rxjava disposable
- 2022 플러터 안드로이드 스튜디오
- ANR이란
- 안드로이드 라이선스
- 클래스
- jvm이란
- 안드로이드 os 구조
- 서비스 쓰레드 차이
- ar vr 차이
- 안드로이드 레트로핏 crud
- rxjava cold observable
- 안드로이드 유닛 테스트 예시
- 자바 다형성
- 안드로이드 레트로핏 사용법
- 2022 플러터 설치
- android ar 개발
- 멤버변수
- 안드로이드 유닛 테스트
- android retrofit login
- 큐 자바 코드
- Rxjava Observable
- rxjava hot observable
- 객체
- 안드로이드 라이선스 종류
- jvm 작동 원리
- 서비스 vs 쓰레드
- 플러터 설치 2022
- 스택 큐 차이
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 전국 대회 선발 고사 (Kotlin) 본문
728x90
반응형
rank, attendance의 길이는 서로 같고 몇 번 유저가 false면 버리고 true면 활용하는 문제니 Map이나 Pair를 써서 풀 수 있을 것 같다.
그리고 등수가 높은 순서대로 3명을 골라서 곱하고 더하면 될 것 같다.
class Solution {
fun solution(rank: IntArray, attendance: BooleanArray): Int {
val eligibleStudents = mutableListOf<Pair<Int, Int>>()
for (i in rank.indices) {
if (attendance[i]) {
eligibleStudents.add(rank[i] to i)
}
}
eligibleStudents.sortBy { it.first }
val top3 = eligibleStudents.take(3).map { it.second }
return 10000 * top3[0] + 100 * top3[1] + top3[2]
}
}
또는 컬렉션 함수들을 활용하면 아래처럼 풀 수 있다.
class Solution {
fun solution(rank: IntArray, attendance: BooleanArray): Int {
val result = rank.mapIndexed { i, value -> i to value }
.filter { attendance[it.first] }
.sortedBy { it.second }
return result[0].first * 10000 + result[1].first * 100 + result[2].first
}
}
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 문자열 정수의 합 (Kotlin) (0) | 2024.06.30 |
---|---|
[Algorithm] 프로그래머스 - 정수 부분 (Kotlin) (0) | 2024.06.30 |
[Algorithm] 프로그래머스 - 뒤에서 5등 위로 (Kotlin) (0) | 2024.06.30 |
[Algorithm] 프로그래머스 - 뒤에서 5등까지 (Kotlin) (0) | 2024.06.28 |
[Algorithm] 프로그래머스 - 배열의 길이에 따라 다른 연산하기 (Kotlin) (0) | 2024.06.28 |
Comments