___  ___    _ _    _  _ _____   _____
 / __|/ _ \  | | |  | || |_ _\ \ / / __|
| (_ | (_) | |_  _| | __ || | \ V /| _|
 \___|\___/    |_|  |_||_|___| \_/ |___|

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

[코딩문제풀기 1일차] Peak Index in a Mountain Array

BY: @holykw | CREATED: June 19, 2018, 4:44 p.m. | VOTES: 6 | PAYOUT: $0.23 | [ VOTE ]

[IMAGE: https://cdn.steemitimages.com/DQmbwuk85jhorPvZoCb13F7gouFg5JH9gKPBWe4H5ecthQT/holykiwi_big.png]

[코딩문제풀기 1일차] Peak Index in a Mountain Array

Introduction

> Talk is cheap. Show me the code. - 리누스 토발즈

Problem

난이도: Easy

다음 속성을 따르는 A라는 산 배열이 있다:

산 배열이 주어지면, A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]를 만족하는 i를 반환해야 한다.

예제 1:

Input: [0,1,0]
Output: 1

예제 2:

Input: [0,2,1,0]
Output: 1

유의사항:

  1. 3 <= A.length <= 10000
  2. 0 <= A[i] <= 10^6
  3. A는 위에서 말했듯이 산이다.

문제 출처: leetcode 852. Peak Index in a Mountain Array

Solution

Solution 1 : forEach를 사용한 기본적인 방법

let peakIndexInMountainArray = A => {
    let peak = -1, index = -1;
    A.forEach((v, i) => {
        if (v > peak) {
            peak = v;
            index = i;
        }
    });
    return index;
};

Solution 2 : Array.indexOf()Math.max()를 사용한 방법 (Very Simple!)

let peakIndexInMountainArray = A => A.indexOf(Math.max(...A));

// 여기서부터는 사이트에 나와있는 해설입니다.

Solution 3 : Linear Scan

let peakIndexInMountainArray = A => {
    let i = 0;
    while(A[i] < A[i + 1]) i++;
    return i;
}

Solution 4 : Binary Search (Very Important!!!)

let peakIndexInMountainArray = A => {
    let lo = 0, hi = A.length - 1
    while (lo < hi) {
        let mi = Math.floor((lo + hi) / 2)
        if (A[mi] < A[mi + 1]) lo = mi + 1
        else hi = mi
    }
    return lo
}

> 2018/06/19 Written by Jon Jee

TAGS: [ #kr-dev ] [ #coding ] [ #jjangjjangman ] [ #kr ] [ #crypto ]

Replies

@bible.com | June 19, 2018, 4:44 p.m. | Votes: 1 | [ VOTE ]

Get a free Bible for your phone, tablet, and computer. bible.com

@secure-kor | June 19, 2018, 4:55 p.m. | Votes: 1 | [ VOTE ]

자바스크립트도 이런코드를 쓸 수 있네요!
생각보다(?) 깊은 언어같기도...
클러이언트단에서 내려받아서 동작하는 언어라
웹해킹 취약포인트가 발생되는 부분이 참 많았던거 같아요.
스크립트 난독화 이런거만보다가 공부하는 글도 새롭네요 +.+
아! 그리고 저도 뉴비지만...?
전체적으로 게시글들이 태그활용이 잘 안되는거같아요.
먹거리는 muksteem kr-food tasteem 태그가 있고 kr-newbie jjangjjangman 태그도 있답니다.
ourselves도 있고.. 찾아보면 많다능! kr-dev 도 있을텐뎅.
현재 지갑에 스달이 $5.943 있으신거 같은데 이것도 놀지말고 보팅봇 부르시길 추천드려요!
보상이 있어야 글쓰는 재미도 있으니까요 @_@! 또 올려주세요~

@holykw | June 19, 2018, 5:20 p.m. | Votes: 0 | [ VOTE ]

긴 댓글과 팁 무진장 감사합니다!! 활성화된 태그 좀 찾아보고 보팅봇도 좀 알아봐야겠네요 감사합니다!

@virus707 | June 21, 2018, 7:15 a.m. | Votes: 2 | [ VOTE ]

(jjangjjangman 태그 사용시 댓글을 남깁니다.)
호출에 감사드립니다! 즐거운 스티밋하세요!

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>