[프로그래머스] 징검다리건너기 - python 파이썬

2024. 10. 30. 09:49·코딩테스트/프로그래머스

문제

 

 

 

이 문제를 보면 일단 엄청 큰 범위가 가장 중요하게 고려해줘야 하는 부분이다. 

 

건널 수 있는 사람수의 최댓 값은 모든 stone이 200,000,000인 경우이므로 200,000,000 이 된다.

 

이렇게 범위가 굉장히 큰 경우에는 일단 "이분 탐색"을 먼저 떠올려 주는게 좋다.

 

이분탐색을 이 문제에 적용하게 된다면 target은 정답이 되는 건널 수 있는 사람 수 가 되어야 한다.

 

 

더 자세한 부분은 작성한 코드를 바탕으로 설명하자면

 

 

def solution(stones, k):
    left = 1
    right = 200000000
    
    while(left<=right):
        tmp = stones.copy()
        mid = (left+right)//2
        
        cnt = 0
        for t in tmp:
            #못건너는 다리의 수
            if t - mid<= 0 :
                cnt += 1
            else:
                #연속하는 0의 개수만 세도록 처리
                cnt = 0
            #연속되는 못건너는 다리의 길이가 k를 넘으면 종료
            if cnt >= k:
                break
        #못건너는 다리의 길이가 k보다 길다는건 현재 인원이 건널 수 있는 최대 인원보다 크다는 것
        if cnt >= k :
            right = mid - 1
        if cnt < k:
            left = mid + 1
    return right

 

 

일단 최댓값이 되는 right는  말했듯이 200,000,000 이고 최소는 범위가 1 이상으로 주어졌기 때문에 left는 1이 된다.

 

그리고 다리를 못건너게 되는 경우는 0인 돌이 k이상 연속으로 올 때이다.

 

이때 연속된 돌의 개수를 세주기 위해 t-mid가 0이하가 아니면 연속된 돌의 개수를 세는 변수인 cnt를 0으로 리셋 해주면된다.

 

그리고 이렇게 계산한 cnt가 k 이상이라는 뜻은 현재 건너는 인원이 해당 다리에서 건널수 있는 최대인원을 넘어버렸기 때문에 k이상이 되는 것이므로 right를 줄여준다. ( 반대의 경우는 left를 키우기)

 

 

이분 탐색을 활용하는 법이 어려웠던 문제였던 것 같다. (ex: 연속되는 0의 개수 처리 등등)

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

[프로그래머스] 대장균의 크기에 따라 분류하기  (0) 2025.12.01
[프로그래머스] 타겟넘버 - python 파이썬  (2) 2024.10.16
[프로그래머스] 다리를 지나는 트럭 - python 파이썬  (0) 2024.10.04
[프로그래머스] 기능개발 - python 파이썬  (2) 2024.09.04
[프로그래머스] 입국심사 - python 파이썬  (1) 2024.08.28
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 대장균의 크기에 따라 분류하기
  • [프로그래머스] 타겟넘버 - python 파이썬
  • [프로그래머스] 다리를 지나는 트럭 - python 파이썬
  • [프로그래머스] 기능개발 - python 파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    K디지털트레이닝
    백엔드
    프로디지털아카데미
    Java
    EC2
    파이썬
    코딩테스트
    github
    python
    백트래킹
    BFS
    프디아
    AWS
    백준
    코테
    투포인터
    프로그래머스
    spring
    그리디
    알파코
    알고리즘
    IT기획
    bastion host
    다익스트라
    깃허브
    UnionFind
    MSA
    알파코캠퍼스
    신한투자증권
    kdt교육
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[프로그래머스] 징검다리건너기 - python 파이썬
상단으로

티스토리툴바