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
- 멤버변수
- 안드로이드 라이선스 종류
- 클래스
- 큐 자바 코드
- 안드로이드 유닛 테스트 예시
- 안드로이드 레트로핏 사용법
- ANR이란
- 자바 다형성
- 서비스 vs 쓰레드
- 스택 자바 코드
- Rxjava Observable
- 객체
- jvm 작동 원리
- ar vr 차이
- 스택 큐 차이
- jvm이란
- 안드로이드 라이선스
- android retrofit login
- 안드로이드 유닛테스트란
- 안드로이드 os 구조
- rxjava hot observable
- 안드로이드 레트로핏 crud
- 안드로이드 유닛 테스트
- rxjava disposable
- 플러터 설치 2022
- rxjava cold observable
- 서비스 쓰레드 차이
- android ar 개발
- 2022 플러터 설치
- 2022 플러터 안드로이드 스튜디오
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 진료순서 정하기 (Kotlin) 본문
728x90
반응형
응급실에 온 환자의 응급도를 기준으로 진료 순서를 정한다. 정수 배열 emergency가 매개변수로 주어질 때
응급도가 높은 순서대로 진료 순서를 정한 배열을 리턴하는 solution()을 완성하라
입출력 예의 result를 보면 숫자가 큰 순서대로 정렬하지 않는다. 그래서 먼저 주먹구구식으로 로직을 짜 봤다.
- 매개변수로 받은 배열을 복사해 둔다
- 복사한 배열을 내림차순 정렬(큰 숫자부터 출력되게)한다
- 복사된 후 정렬된 배열 vs 원본 배열을 비교해서 정렬된 배열의 값들이 원본 배열에선 어떤 위치에 있는지 찾는다
- 위치를 찾으면 그 인덱스에 +1을 한 다음 리턴한다.
그리고 이걸 코드로 옮긴 결과는 이렇다.
class Solution {
fun solution(emergency: IntArray): IntArray {
val list = emergency.copyOf()
list.sortDescending()
for (i in list.indices) {
emergency[i] = list.indexOf(emergency[i]) + 1
}
return emergency
}
}
3번의 비교해서 값들의 위치를 찾는 부분은 매개변수로 받은 emergency에 바로 때려박는 식으로 처리했다. 제출 결과 정답으로 인정됐고 이걸 어떻게 해야 더 짧은 코드로 바꿀 수 있을지 고민해봤는데 방법이 잘 나오지 않아서 다른 사람들의 풀이를 참고했다.
class Solution {
fun solution(emergency: IntArray) = emergency.map {
emergency.sortedDescending().indexOf(it) + 1
}.toIntArray()
}
위에서 생각했던 로직이 그냥 한 줄로 끝난다. 먼저 주먹구구식으로 풀고 그 다음 map {}을 사용해서도 풀어봐야겠다.
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 개미 군단 (Kotlin) (0) | 2022.12.26 |
---|---|
[Algorithm] 프로그래머스 - 순서쌍의 개수 (Kotlin) (0) | 2022.12.24 |
[Algorithm] 프로그래머스 - 외계행성의 나이 (Kotlin) (0) | 2022.12.24 |
[Algorithm] 프로그래머스 - 배열 자르기 (Kotlin) (0) | 2022.12.23 |
[Algorithm] 프로그래머스 - 짝수의 합 (Kotlin) (0) | 2022.12.23 |
Comments