해결된 질문
작성
·
151
0
변화만 생기는 곳만 체크한다고 하셨는데, 예로 들어 한 행의 두 원소를 바꾸면 그 두 원소의 열과 그 행을 살펴보면 된다고 하셨는데,
def get_best(y, x):
global N, matrix
best = 0
# columns
bef = '-'
value = 0
for j in range(N):
if bef == matrix[y][j]:
value += 1
else:
value = 1
bef = matrix[y][j]
best = max(best, value)
# rows
bef = '-'
value = 0
for i in range(N):
if bef == matrix[i][x]:
value += 1
else:
value = 1
bef = matrix[i][x]
best = max(best, value)
return best
왜 바꾼 원소 기준으로 그 원소 위치의 하나의 행과 열만 보는걸로 코드를 짜셨나요?
설명과 코드가 달라서 약간 이해가 안 갑니다 ㅜ
답변 2
0
안녕하세요 김민섭님!
강의 설명에서 변화되는 곳을 체크하려면 두 원소의 열과 행을 살펴보면 된다고 말씀드렸습니다.
하지만 코드는 바꾼 원소 기준으로 하나의 행과 열만 체크하는 방식으로 구현하였는데요.
그 이유는 전체 보드를 탐색하며 각 원소의 4방향을 탐색하기 때문입니다.
예를 들어 'CP'에서 'PC'로 전환되는 경우는, 원소 C에서 4방향 탐색을하여 P와 전환된 경우와 원소 P에서 4방향 탐색을하여 C와 전환된 경우 2가지 케이스가 있습니다.
두 케이스가 진행되면서 결국 강의에서 설명드린 두 원소의 열과 행이 모두 체크됩니다.
때문에 보드 전체를 탐색하는 과정에서 전환되는 원소를 기준으로 하나의 행과 열만 체크하면 되는 원리입니다.
colums, rows 주석은 말씀하신대로 해석하면 주석을 바꾸는 것이 맞는데요.
또 다르게 해석하면 colum 여러 개(colums)를 탐색하여 하나의 row를 본다는 의미로도 볼 수 있기 때문에, 이 부분은 고민 후 좀 더 적절한 표현으로 반영하겠습니다.
제 강의가 도움이 되셨다니, 뿌듯하네요.
남은 강의도 응원하겠습니다.
또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.
감사합니다. :)
0
추가로 주석에 column된 부분은 열을 확인하는거인데, 코드 상에서는 x축을 쭉 흝으면서 같은 값으로 이루어진 연속된 길이를 구하고 있습니다. 이 부분 주석은 row로 바꿔야하는거 아닌가요?? 답변 기다리겠습니다 큰 도움 되고 있습니다 ㅎ