ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해 99 - 서울에서 김서방 찾기
    알고리즘 공부/JavaScript 문제 2023. 4. 16. 21:50

    [ 문제 ]

    String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. 

    seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

    • seoul은 길이 1 이상, 1000 이하인 배열입니다.
    • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
    • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

     

    [ Input / Output 예시 ]

    Input Output
    ["Jane", "Kim"] "김서방은 1에 있다"

     


    [ 풀이 ]

    풀이 (1)

    (내 풀이)

    "Kim"은 오직 한 번만 나타나므로 .indexOf() 메소드를 사용하여 인덱스를 반환했다.

     

    풀이 (2)

    (프로그래머스 풀이)

    .indexOf() 만 사용할 수 있을 줄 알았는데 ES5 문법이라고 한다.

    ES6 문법으로 사용하는 메소드는 .findIndex() 메소드이다.

    .findIndex() 도 .indexOf() 처럼 최초의 인덱스만을 반환하지만 콜백 함수를 이용하여 조건을 넣어줄 수 있다는 점이 차이점이다.

    .findIndex()와 함께 .find() 도 같이 ES6문법으로 등장하였으니 둘다 공부해야겠다.

     

    [ 코드 ]

    // 풀이 (1)
    // 오직 한 번만 나타나므로 .indexOf 메소드를 사용하여 인덱스의 위치를 찾음
    const solution1 = function (seoul) {
        return `김서방은 ${seoul.indexOf('Kim')}에 있다`;
    }
    
    console.log(solution1(["Jane", "Kim"]))    // 김서방은 1에 있다
    
    
    // 풀이 (2)
    // .findIndex 메소드도 .indexOf 메소드 처럼 최초의 인덱스 위치를 찾아준다.
    // 단, 각 배열의 조건을 콜백 함수를 이용하여 설정한다.
    // .find, .findIndex는 ES6 문법으로 좀더 일반적으로 사용하므로 알아두자.
    const solution2 = function (seoul) {
        return `김서방은 ${seoul.findIndex((s) => s==='Kim')}에 있다`;
    }
    
    console.log(solution2(["Jane", "Kim"]))    // 김서방은 1에 있다

    댓글

Designed by Tistory.