[boj] 백준 20005 보스몬스터 전리품 python 풀이

2023. 9. 16. 17:10· 알고리즘/백준 문제풀이
목차
  1. 문제
  2. 문제 풀이
  3. 코드
반응형

문제

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

 

20005번: 보스몬스터 전리품

입력의 첫째 줄에는 멤멤월드의 지도의 크기를 나타내는 두 정수 M(6 ≤ M ≤ 1000), N(6 ≤ N ≤ 1000)과 플레이어의 수 P(1 ≤ P ≤ 26)가 주어진다. M은 지도의 세로 길이, N은 지도의 가로 길이이다. 입

www.acmicpc.net

 

문제 풀이

맵이 작아서 그냥 바로 bfs로 같은 거리에 있는 player의 dps 묶고, 매 depth 마다 보스 때려 hp -= accm_dps

 

코드

 import sys
input = sys.stdin.readline
import collections

## 입력
M, N, P = map(int,input().split())
MAP = []
for i in range(M):
    tmp = list(input().strip())
    for j in range(N):
        if tmp[j] == 'B':
            bx, by = i, j
            break
    MAP.append(tmp)

player_status = dict()
for _ in range(P):
    name, dps = input().split()
    player_status[name] = int(dps)
HP = int(input().strip())

'''
보스로부터 bfs 돌면서 같은 distance에 있는 플레이어들은 accm_dps로 붂어서 
한 루프 돌 때마다 패 -> HP < 0 되면 종료
'''
def bfs(MAP, bx, by, HP):
    accm_dps, accm_person = 0, 0
    q = collections.deque()
    q.append((bx,by))
    MAP[bx][by] = '0' # visited

    leng = len(q)
    while q and HP>0:
        cx, cy = q.popleft()

        for tx, ty in {(-1,0), (0,1), (1,0), (0,-1)}:
            nx = tx + cx
            ny = ty + cy

            if 0<=nx<M and 0<=ny<N and MAP[nx][ny] != '0' and MAP[nx][ny] != 'X':
                if 'a' <= MAP[nx][ny] <= 'z':
                    accm_person += 1
                    accm_dps += player_status[MAP[nx][ny]]
                q.append((nx,ny))
                MAP[nx][ny] = '0'

        leng -= 1
        if leng == 0:
            leng = len(q)
            HP -= accm_dps

    return accm_person

print(bfs(MAP, bx, by, HP))
반응형

'알고리즘 > 백준 문제풀이' 카테고리의 다른 글

[boj] 백준 2045 마방진 python 풀이  (1) 2023.09.16
[boj] 백준 2792 보석 상자 python 풀이  (0) 2023.09.07
[boj] 백준 14940 쉬운 최단거리 python 풀이  (0) 2023.08.29
[boj] 백준 1743 음식물 피하기 python 풀이  (0) 2023.08.29
[boj] 백준 9461 파도반 수열 python 풀이  (0) 2023.08.19
  1. 문제
  2. 문제 풀이
  3. 코드
'알고리즘/백준 문제풀이' 카테고리의 다른 글
  • [boj] 백준 2045 마방진 python 풀이
  • [boj] 백준 2792 보석 상자 python 풀이
  • [boj] 백준 14940 쉬운 최단거리 python 풀이
  • [boj] 백준 1743 음식물 피하기 python 풀이
감자156
감자156
공부하고 삽질한 것 정리하는 블로그입니다. 코딩 테스트 대비를 위한 백준-프로그래머스 문제 풀이, pytorch/ubuntu 에러 해결법, 논문 리뷰 등을 올립니다.
반응형
감자156
감자블로그
감자156
전체
오늘
어제
  • 분류 전체보기 (224)
    • CS 정리 (0)
    • 맥북 적응기 (3)
    • 개발환경 (10)
    • 오류 핸들링 (16)
    • 이미지 처리 (2)
    • 인공지능 (4)
    • 논문 리뷰 (5)
    • 기타 정보 (12)
    • 알고리즘 (171)
      • 백준 문제풀이 (53)
      • 개념 (1)
      • 프로그래머스 문제풀이 (114)
      • 릿코드 문제풀이 (1)
    • python (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • nvidia-driver 오류
  • 이미지 처리
  • git 오류
  • 백준 풀이
  • 블로그관리
  • 개발 환경 설정
  • 시험 후기
  • git 에러
  • 리눅스 명령어
  • aws 오류
  • 논문 리뷰
  • 릿코드 풀이
  • 알고리즘 개념
  • opencv 에러
  • 맥북 적응기
  • 대외 활동 후기
  • python
  • 프로그래머스 풀이
  • pytorch 오류

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
감자156
[boj] 백준 20005 보스몬스터 전리품 python 풀이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.