[백준] 21610번 마법사 상어와 비바라기- 파이썬

2022. 3. 26. 16:38·알고리즘 공부/구현

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

 

21610번: 마법사 상어와 비바라기

마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기

www.acmicpc.net

 

from collections import deque
import sys
n,m = map(int,sys.stdin.readline().split())
basket = []
for _ in range(n):
    basket.append(list(map(int,sys.stdin.readline().split())))
dx = [ 0, -1, -1, -1, 0, 1, 1,  1]
dy = [-1, -1,  0,  1, 1, 1, 0, -1]

cloud = deque([[n-1, 0], [n-1, 1], [n-2, 0], [n-2, 1]])
for _ in range(m):
    d,s = map(int,sys.stdin.readline().split())
    d -= 1
    c = [[0] * n for _ in range(n)]
    cloudlen = len(cloud)
    while cloudlen:
        x,y = cloud.popleft()
        nx = x + s*dx[d]
        ny = y + s*dy[d]
        if nx < 0:
            nx = (n - 1) - (((-1) * nx - 1) % n)
        elif nx >= n:
            nx %= n
        if ny < 0:
            ny = (n - 1) - (((-1) * ny - 1) % n)
        elif ny >= n:
            ny %= n

        basket[nx][ny] += 1
        cloudlen -=1
        c[nx][ny] = 1
        cloud.append([nx,ny])
    copy_water = [[-1,-1],[-1,1],[1,-1],[ 1, 1]]

    for i,j in cloud:
        cnt = 0
        for k,l in copy_water:
            nx = i + k
            ny = j + l

            if 0 <= nx < n and 0 <= ny < n:
                if basket[nx][ny] != 0:
                    cnt += 1
        basket[i][j] += cnt

    cloud = deque()
    for i in range(n):
        for j in range(n):
            if basket[i][j] >=2 and c[i][j] == 0:
                basket[i][j] -= 2
                cloud.append([i,j])

print(sum(sum(a) for a in basket))

 

이렇게 풀었는데 

사실 ~ not in ~~를 사용했는데 

그게 시간을 많이 잡아 먹나보다

어렵다 어려워 구현도 조건에 맞게하면 된다.

 

그러나 

	if nx < 0:
            nx = (n - 1) - (((-1) * nx - 1) % n)
        elif nx >= n:
            nx %= n
        if ny < 0:
            ny = (n - 1) - (((-1) * ny - 1) % n)
        elif ny >= n:
            ny %= n

이 풀이가 다른 분이 한걸 옮겨온건데 내가 시험장에서 이걸 생각할수 있을까...?

반응형

'알고리즘 공부 > 구현' 카테고리의 다른 글

[백준] 15685번 드래곤 커브- 파이썬  (0) 2022.03.30
[백준] 14891번 톱니바퀴- 파이썬  (0) 2022.03.27
[백준] 21608번 상어 초등학교 - 파이썬  (0) 2022.03.25
[백준] 20055번 컨베이어 벨트 위의 로봇 - 파이썬  (0) 2022.02.25
[백준] 5622번 다이얼 - 파이썬  (0) 2021.05.10
'알고리즘 공부/구현' 카테고리의 다른 글
  • [백준] 15685번 드래곤 커브- 파이썬
  • [백준] 14891번 톱니바퀴- 파이썬
  • [백준] 21608번 상어 초등학교 - 파이썬
  • [백준] 20055번 컨베이어 벨트 위의 로봇 - 파이썬
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (502)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (18)
        • git (4)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (4)
        • MySQL (0)
        • Cloud (2)
      • 회고 (5)
      • Spring (7)
      • JPA (1)
      • DB (1)
        • MySql (3)
        • Redis (1)
      • Java (8)
        • JSP (1)
      • 인프라 (3)
      • 잡담 (0)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    DFS
    코딩문제
    에라토슽네스의 체
    스택
    왜곡보정
    코딩기초스킬
    백준
    BFS
    n진법 변환
    그리디
    다이나믹 프로그래밍
    큐
    C언어 기초
    정렬
    코딩테스트
    소수찾기
    코딩기초
    선택정렬
    이미지처리
    코딩
    프로그래머스
    삽입 정렬
    c언어
    알고리즘
    if문
    인접리스트
    캘리브레이션
    인접행렬
    자료구조
    순차 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
[백준] 21610번 마법사 상어와 비바라기- 파이썬
상단으로

티스토리툴바