[백준|파이썬] 5014: 스타트링크 (실버1)

2023. 4. 12. 22:59·Problem Solving/백준
반응형
문제

https://www.acmicpc.net/problem/5014

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

 

 

🐍파이썬
import sys
from collections import deque

def bfs(x):
    queue = deque([x])
    tower[x] = 0
    while queue:
        x = queue.popleft()
        if x == g:
            return tower[x]
        for nx in [x+u, x-d]:
            if nx > f or nx <= 0:
                continue
            if tower[nx] == -1:
                tower[nx] = tower[x] + 1
                queue.append(nx)
    return "use the stairs"

f, s, g, u, d = map(int, sys.stdin.readline().split())
tower = [-1] * (f+1)
print(bfs(s))

1697: 숨바꼭질(파이썬) 과 동일한 방식으로 풀었다. 

1️⃣ tower라는 리스트를 건물의 층수만큼 -1로 초기화해 주었다. 이때 배열의 인덱스와 층수를 동일하게 만들기 위해 배열의 원소는 f+1개로 설정해주었다.

ex) f = 5 라면, 배열의 원소는 [ -1, -1, -1, -1, -1, -1 ]이고 인덱스 0은 사용하지 않는다.

2️⃣ 강호의 위치 s에서부터 bfs를 실행한다. 강호가 방문한 tower[s]는 0으로 초기화해 다시 방문하지 않게 해준다.

3️⃣ 큐에서 방문할 수 있는 위치를 하나하나 방문한다. 위층으로 올라가는 경우의 좌표인 x+u와 아래층으로 내려가는 경우의 좌표인 x-d를 모두 방문하되, 배열의 범위를 벗어나 에러를 발생시킬 수 있는 경우의 수는 제외한다. 추가로 0층이 존재한지 않다고 가정했기 때문에 인덱스 0도 방문하지 않도록 해준다.

4️⃣  방문한 좌표의 값은 이전 좌표값 + 1로 설정하면 버튼을 누른 횟수를 체크하는 동시에 방문처리도 진행할 수 있다.(tower[nx] == -1인 경우에만 방문하기 때문)

5️⃣ 만약 큐에 저장된 값이 g(스타트링크 사무실)와 동일하다면, 목적지에 도달했다는 뜻이므로 현재 좌표의 값(버튼을 누른 총 횟수)를 리턴한다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > 백준' 카테고리의 다른 글

[백준|파이썬] 2775: 부녀회장이 될테야 (브론즈1)  (0) 2023.04.17
[백준|파이썬] 5766: 할아버지는 유명해! (실버4)  (0) 2023.04.14
[백준|파이썬] 1388: 바닥 장식 (실버4)  (0) 2023.04.13
[백준|파이썬] 1697: 숨바꼭질 (실버1)  (0) 2023.04.12
[백준|파이썬] 7569: 토마토 (골드5)  (0) 2023.04.12
[백준|파이썬] 13700: 완전 범죄 (실버1)  (0) 2023.04.11
'Problem Solving/백준' 카테고리의 다른 글
  • [백준|파이썬] 5766: 할아버지는 유명해! (실버4)
  • [백준|파이썬] 1388: 바닥 장식 (실버4)
  • [백준|파이썬] 1697: 숨바꼭질 (실버1)
  • [백준|파이썬] 7569: 토마토 (골드5)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    블로그 제작
    자바스크립트
    뉴렉처
    AWS
    클론 프로젝트
    SWEA
    포트폴리오
    프로그래머스
    Next.js
    bfs
    React
    컴퓨터네트워크
    백준
    강의내용정리
    웹사이트
    d3
    플러터
    타입스크립트
    Jiraynor Programming
    공식문서
    spring boot
    프로젝트
    파이썬
    알고리즘
    리액트
    구현
    ZeroCho
    자바
    Til
    mysql
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[백준|파이썬] 5014: 스타트링크 (실버1)
상단으로

티스토리툴바