Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-10-06] sumin #300 #330

Merged
merged 1 commit into from
Mar 18, 2024
Merged

[2023-10-06] sumin #300 #330

merged 1 commit into from
Mar 18, 2024

Conversation

ksumini
Copy link
Contributor

@ksumini ksumini commented Oct 10, 2023

PR Summary

풀이시간: 35분

<input>
m: 판의 높이(2 ≦ n, m ≦ 30)
n: 판의 폭(2 ≦ n, m ≦ 30)
board: 판의 배치 정보(대문자 A-Z)

<solution>
문제에서 주어진대로 구현한다.
더 이상 제거되는 블록이 없을 때까지 다음의 과정을 반복

  1. 제거되는 블록 확인하기(2x2)
  • 제거되는 블록의 좌상단 좌표만 따로 보관하기
  1. 제거되는 블록은 .으로 값 변경하기
  • 제거되는 블록의 좌상단 좌표를 이용해 2x2 칸은 모두 .으로 변경
  1. 제거되는 블록의 위 블록들 내려주기
  • 재귀를 통해 더 이상 블록을 내릴 수 없을 때까지 제거된 블록 위의 블록들 내려주기

<시간복잡도>
O(NM) + O(NM) + O(NM) = O(3NM) = O(NM)을 더 이상 블록이 제거될 수 없을 때까지 반복

  • 제거되는 블록이 있는지 확인
  • 제거되는 블록 .으로 변경
  • 블록을 내리는 작업

@ksumini ksumini self-assigned this Oct 10, 2023
@ksumini ksumini linked an issue Oct 10, 2023 that may be closed by this pull request
Copy link
Contributor

@zsmalla zsmalla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

구현문제를 깔끔하게 잘 풀이해내신 것 같습니다! 특히 블록을 내리는 로직을 재귀를 활용해서 깔끔하게 정의하신 점이 인상깊었던 것 같아요! 고려해보면 좋을 점도 코멘트 달아두었습니다. 고생하셨습니다 수민님!

# base condition(불가능한 경우: 최하단인 경우)
if x == len(board) - 1:
return
# 아래로 내릴 수 있는 경우만 계속해서 재귀호출(블록 내리기)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이것 조차 재귀로 구현하시다니.... 훨씬 직관적이고 좋은 것 같네요!

go(i, j, board)

# 4) 제거된 블록의 개수 세기
answer = sum(row.count('.') for row in board)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

매번 제거되는 블록을 '.'로 기록하고 세는 방법도 좋은 것 같습니다! 어차피 remove블록을 관리할 거라면, 제거할 블록을 담을 때 remove를 set으로 정의해서 담아두는 방식도 고려해보면 좋을 것 같아요. 그러면 이 N^2 로직을 안사용할 수 있을 것 같습니다.

@zsmalla zsmalla merged commit da59182 into main Mar 18, 2024
@zsmalla zsmalla deleted the sumin-#300 branch March 18, 2024 10:05
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Programmers] 프렌즈4블록
2 participants