행렬 구성 질문 (특정 좌표의 행렬 값들 사이의 행렬 값)

조회수 365회

안녕하세요 파이썬 공부하는 학생입니다.

행렬을 구성하는 코드를 작성 중인데요 막히는 부분이 있어서 질문 드립니다 ㅠㅠ

1번 그림과 같은 행렬이 있을때 현재 0이 위치한 무작위로 1의 값을 추가하여 행렬을 구성하고 싶은데 2 들 끼리는 무조건 1로 연결된 행렬을 구성하고 싶습니다.

예를 들면 2번, 3번 그림처럼 1로 연결되도록 행렬을 구성하고 싶은데 막막합니다...혹시 비슷한 코딩을 해보셨거나 이미지힌트라도 주시면 정말 감사하겠습니다 !! 감사합니다

  • 1 로 경로를 만들라는 말인 것 같은데 어떤 규칙이 있나요? 0을 몽땅 1 로 바꿔도 되나요? nowp 2022.6.11 07:21
  • 우선 2로 이뤄진 덩어리들을 구하시고, 각 덩어리들 간의 연결을 하셔야 겠네요. 문제의 조건이 "두 개의 '2'로 이뤄진 덩어리가 있다"라고 가정하고 말씀 드리면, 우선 배열 전체에 대해서 for loop 돌면서, 2가 발견 되면 DFS든, BFS든 수행해서 덩어리를 구하셔야 됩니다. 이 때 이미 발견한 덩어리는 다시 발견되지 않도록 visited를 가지고 걸러 주셔야 겠고요. 그리고 나서, 찾은 덩어리 두 개에 대해 연결 하는건 조건이 따로 있지 않나요? 두 덩어리에 대해 최단경로로 이어야 한다던지, 1을 최소로 써야 한다던지, 혹은 문제에서 덩어리의 개수가 두 개가 넘을수도 있다던지... 뭐 그런 조건을 말씀 해주셔야 좀 더 자세히 답을 드릴 수 있겠네요. 홍민준 2022.6.12 02:12
  • 1. daewon / 네 맞습니다 ! 경로를 구성하는 규칙은 없습니다 ! 0을 몽땅 1로 바꿔도 되요 ! 허웅범 2022.6.13 20:11
  • 2. nickeys / 감사합니다. 두 덩어리 연결하는 조건은 따로 없습니다. 가능한 많은 경우를 다루고 싶어서 기타 조건은 고려하지 않고 있습니다 ! 허웅범 2022.6.13 20:12

1 답변

  • 모든 0을 1로 바꾸는 코드입니다.

    >>> import numpy as np
    
    >>> grid = np.zeros((5, 5))
    >>> grid
    array([[0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.]])
    >>> grid[:2, :2] = 2
    >>> grid[4:, 4:] = 2
    >>> grid
    array([[2., 2., 0., 0., 0.],
           [2., 2., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 0.],
           [0., 0., 0., 0., 2.]])
    >>> grid[grid == 0] = 1
    >>> grid
    array([[2., 2., 1., 1., 1.],
           [2., 2., 1., 1., 1.],
           [1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 2.]])
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)