RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚

이상한 나라의 개발자

Algorithm/프로그래머스

[프로그래머스>Lv2] 뒤에 있는 큰 수 찾기 - Kotlin

2023. 2. 3. 01:22
728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제

정수로 이루어진 배열 numbers가 있습니다.

배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰 수라고 합니다.

 

[입력]

- numbers: 정수 배열

 

[출력]

모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return

🌹 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.

 

2. 풀이

먼저 자신보다 뒤에 있는 숫자에서 가장 큰 숫자를 찾는 문제이기 때문에 뒤에서부터 결과를 찾아야 합니다.

 

저는 뒷 큰수를 먼저 구하는 것이 아닌, 뒷 큰수의 index를 먼저 구해두고

마지막에 index에 해당하는 수를 numbers에서 대체하는 방식으로 구현하였습니다.

 

이렇게 하게 되면, 자신의 뒤에 있는 모든 숫자를 하나씩 탐색해가며 뒷 큰수를 찾을 필요없이,

index를 타고 가면서 빠르게 탐색할 수 있기 때문입니다.

👇🏻 요렇게!

 

3. 코드

class Solution {
    fun solution(numbers: IntArray): IntArray {
        val n = numbers.size
        val answer = IntArray(n) { 0 }
        answer[n - 1] = -1

        for (i in n - 2 downTo 0) {
            when {
                numbers[i + 1] == numbers[i] -> answer[i] = answer[i + 1]
                numbers[i + 1] > numbers[i] -> answer[i] = i + 1
                else -> {
                    var index = i + 1
                    while (index >= 0 && numbers[index] <= numbers[i])
                        index = answer[index]
                    answer[i] = index
                }
            }
        }

        return answer.map { if (it == -1) -1 else numbers[it] }.toIntArray()
    }
}​
반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

[프로그래머스>Lv2] 호텔 대실 - kotlin, python  (0) 2023.02.08
[프로그래머스>Lv1] 둘만의 암호 - kotlin & python  (0) 2023.02.03
[프로그래머스>Lv2] 택배 배달과 수거하기 - Python  (0) 2023.02.03
[프로그래머스>Lv.2] 무인도 여행  (0) 2023.01.31
[Lv.2] 이모티콘 할인행사  (0) 2023.01.27
    'Algorithm/프로그래머스' 카테고리의 다른 글
    • [프로그래머스>Lv2] 호텔 대실 - kotlin, python
    • [프로그래머스>Lv1] 둘만의 암호 - kotlin & python
    • [프로그래머스>Lv2] 택배 배달과 수거하기 - Python
    • [프로그래머스>Lv.2] 무인도 여행
    RIEN😚
    RIEN😚
    안드로이드 / 코틀린 독학으로 취업하자!

    티스토리툴바