Where who wants to meet someone

가까운 1 찾기 본문

728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181898

 

프로그래머스

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

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

import Foundation

func solution(_ arr:[Int], _ idx:Int) -> Int {
    return arr.enumerated().filter { $0.offset >= idx && $0.element == 1 }.map { $0.offset }.min() ?? -1
}

- * 본 문제는 설명이 잘못된 점이 있음('idx보다 크면서' x -> 'idx보다 크거나 같으면서' 로 풀어야 함)

- arr의 항목들을 enumerated로 offset, element의 짝으로 만들고, offset이 idx보다 크거나 같으면서 element가 1인 짝을 filter로 거르고, 해당 짝의 offset을 map을 통해 배열로 만든 후, 그 중 가장 작은 값을 반환하거나 없다면 -1을 반환하도록 함

 

// 좋아요를 가장 많이 받은 답안
import Foundation

func solution(_ arr:[Int], _ idx:Int) -> Int {
    return arr[idx...].firstIndex(of: 1) ?? -1
}

// 사람들이 가장 많이 사용한 답안
import Foundation

func solution(_ arr:[Int], _ idx:Int) -> Int {
    for i in idx..<arr.count{
        if arr[i] == 1 { return i }
    }
    return -1
}

- 1) arr 중에서 idx 인덱스 이후의 값들 중 1인 firstIndex를 반환, 없으면 -1 반환

- 2) idx ~ arr의 수 미만의 범위에서 arr[i]의 값이 1이면 반환, 없으면 -1 반환

- 이전에 enumerated를 다른 사람들의 답안에서 보고, 몇 번 사용하다 보니 풀이를 할 때 바로 생각나는 것은 좋았지만, 다른 사람들의 답안처럼 다양한 방법들이 있음에도 하나만 떠올랐다는 것은 추후 다른 문제들을 풀 때 부정적인 영향을 줄 수 있으므로 다양하게 고민해보고 문제를 푸는 습관을 들여야겠다.

 

점수: +7

'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글

첫 번째로 나오는 음수  (0) 2024.01.23
리스트 자르기  (0) 2024.01.23
카운트 다운  (0) 2024.01.22
글자 지우기  (0) 2024.01.22
배열 만들기 1  (0) 2024.01.22