Coding Test/프로그래머스(Python)

[프로그래머스/Python] Level 3_징검다리 건너기

syunze 2024. 3. 2. 17:32

📌문제 유형

2019 카카오 개발자 겨울 인턴십

 

📌문제

 

프로그래머스

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

programmers.co.kr

 

📌나의 문제풀이

- 정확성 모두 통과, 효율성 0

def solution(stones, k):
    answer = 0
    
    while True:
        flag = 0
        tmp = 0
        
        # 1씩만 제거
        for i in range(len(stones)):
            if stones[i] > 0:
                stones[i] -= 1
            else:
                if tmp == 0:
                    before = i
                    tmp += 1
                else:
                    if i - 1 == before:
                        tmp += 1
                    else:
                        tmp = 1
                        
                if tmp == k:
                    flag = 1
                    break
                        
                before = i
            
                    
        if flag == 0:
            answer += 1
        else:
            break
    
    return answer

 

📌다른사람의 문제풀이

- 이진탐색 이용한 풀이

 

[프로그래머스] 징검다리 건너기(Python)

https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니

wiselog.tistory.com

def solution(stones, k):
    left = 1
    right = 200000000
    while left <= right:
        temp = stones.copy()
        mid = (left + right) // 2
        cnt = 0
        for t in temp:
            if t - mid <= 0:
                cnt += 1
            else:
                cnt = 0
            if cnt >= k:
                break
        if cnt >= k:
            right = mid - 1
        else:
            left = mid + 1
        
    return left

 

📌리뷰

- 이분탐색 코드

 

[알고리즘 / Python] 이분 탐색 / 이진 탐색 (Binary Search)

이분 탐색이란, 오름차순으로 정렬된 배열을 반복적으로 반으로 나누어 target이 선택될 때까지 탐색하는 알고리즘이다. 1. 이분 탐색의 조건 반드시 오름차순으로 정렬된 상태에서 시작해야 한

code-angie.tistory.com

 

728x90