[Python] 백준/BOJ 22869번: 징검다리 건너기 (small) (Silver 1)

2025. 7. 12. 11:13·Algorithm/백준 (BOJ)
반응형

💻 Problem

문제 보러 가기

 

 N개의 돌이 일렬로 나열되어 있다. N개의 돌에는 왼쪽부터 차례대로 수 A1A2...Ai...AN로 부여되어 있다. 가장 왼쪽에 있는 돌에서 출발하여 가장 오른쪽에 있는 돌로 건너가려고 한다.

  1. 항상 오른쪽으로만 이동할 수 있다.
  2.  i번째 돌에서 j(i<j)번째 돌로 이동할 때 (j−i) × (1 + |Ai−Aj|) 만큼 힘을 쓴다.
  3. 돌을 한번 건너갈 때마다 쓸 수 있는 힘은 최대 K이다.

이때, 가장 왼쪽 돌에서 출발하여 가장 오른쪽에 있는 돌로 건너갈 수 있는지 구해보자.

 

💡 Approach

이중반복문을 통해 i번째 돌에서 j번째 돌로 이동할 때 드는 힘을 계산한다.

힘이 K 이하이면 이동할 수 있다.

이 정보를 바탕으로 인접 리스트를 만든다.

 

만든 인접 리스트를 이용해 dfs를 돌려 0번째 돌에서 N-1번째 돌까지 이동할 수 있는지 확인한다.

 

✏️ Solution

import sys
sys.setrecursionlimit(10 ** 8)
input = sys.stdin.readline

def is_connect(prev):
    if prev == N - 1:
        print("YES")
        exit()
    
    visited[prev] = True
    for next in stones[prev]:
        if not visited[next]:
            is_connect(next)

N, K = map(int, input().split())
A = list(map(int, input().split()))
stones = [[] for _ in range(N)]
visited = [False] * N

for i in range(N):
    for j in range(i + 1, N):
        power = (j - i) * (1 + abs(A[i] - A[j]))
        
        if power <= K:
            stones[i].append(j)

is_connect(0)
print("NO")

인접 리스트 만드는 부분에서 N^2

dfs 탐색에서 노드 수 + 간선 수 = N + N^2

 

둘을 더하면 2 * N^2 + N이다.

N의 최댓값은 5,000이므로 N^2은 약 2 * 10^7이다.

반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 3459번: 아스키 도형 (Silver 1)  (0) 2025.07.14
[Python] 백준/BOJ 3054번: 피터팬 프레임 (Silver 5)  (0) 2025.07.13
[Python] 백준/BOJ 14929번: 귀찮아 (SIB) (Silver 4)  (0) 2025.07.11
[Python] 백준/BOJ 17086번: 아기 상어 2 (Silver 2)  (0) 2025.07.10
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 3459번: 아스키 도형 (Silver 1)
  • [Python] 백준/BOJ 3054번: 피터팬 프레임 (Silver 5)
  • [Python] 백준/BOJ 14929번: 귀찮아 (SIB) (Silver 4)
  • [Python] 백준/BOJ 17086번: 아기 상어 2 (Silver 2)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (196)
      • SSAFY (10)
      • Algorithm (114)
        • 이론 (6)
        • 백준 (BOJ) (107)
        • 프로그래머스 (1)
      • Trouble Shooting (9)
      • Frontend (6)
      • React (17)
      • Next.js (4)
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    중복조합
    DP
    Algorithm
    백준
    SSAFY
    Next.js
    dfs
    Error
    백트래킹
    강의
    블록체인
    재귀
    파이썬
    티스토리챌린지
    싸피
    SSAFYcial
    구현
    우선순위큐
    수학
    Heap
    힙
    순열
    React
    Java
    html5
    브루트포스
    오블완
    알고리즘
    bfs
    중복순열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 22869번: 징검다리 건너기 (small) (Silver 1)
상단으로

티스토리툴바