Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- diffusion
- VirtualTryON
- prompt2prompt
- 논문리뷰
- magdiff
- 코딩테스트
- Python
- image editing
- visiontransformer
- research intern
- 코테
- ddpm inversion
- video generation
- DP
- image generation
- Programmers
- 3d editing
- transformer
- BOJ
- 네이버 부스트캠프 ai tech 6기
- ddim inversion
- plug-and-play
- video editing
- ami lab
- diffusion models
- style align
- 프로그래머스
- image2image translation
- 3d generation
- Vit
Archives
- Today
- Total
평범한 필기장
[BOJ_Python] 1080_행렬 본문
https://www.acmicpc.net/problem/1080
내가 생각한 아이디어
나는 이 문제를 너무 복잡하게 생각해서 자꾸 3번째 테스트 케이스에서 -1이 출력되었다. 기본적으로 틀린 부분을 기준으로 3*3 행렬부분을 바꿔야겠다는 생각은 했지만 그것을 적용하는 부분에서 내가 잘못 생각한 것 같다. 나는 3*3행렬에서 중심이 될 수 있는 점들을 골라내고 그 중심들을 모두 탐색해서 중심을 중심으로 3*3행렬 부분에서 틀린 부분이 있으면 그 행렬을 전부 바꿔야겠다는 이상한?? 생각을 해버렸다;; 결국 복잡한 테스트 케이스에선 정답이 나오지 않았다ㅜㅜ
정답 코드
import sys
n, m = map(int, input().split())
A = []
B = []
for _ in range(n):
A.append(list(map(int, sys.stdin.readline().rstrip())))
for _ in range(n):
B.append(list(map(int, sys.stdin.readline().rstrip())))
def change(a, b):
for i in range(a, a+3):
for j in range(b, b+3):
if A[i][j] == 1:
A[i][j] = 0
else:
A[i][j] = 1
cnt = 0
for i in range(n-2):
for j in range(m-2):
if A[i][j] != B[i][j]:
change(i, j)
cnt += 1
if A == B:
break
if A == B:
break
if A == B:
print(cnt)
else:
print(-1)
내가 간과한 것
- input matrix의 크기가 3*3 보다 작은 경우를 굳이 따로 생각 할 필요가 없었다. ( range함수에 음수가 들어가면 반복문이 아예 안돌아가서 탐색을 안함!!)
- 3*3행렬의 중앙을 생각해서 복잡하게 따질 필요가 없었다. (모든 지점을 탐색하는 대신 n-3째 행, m-3 열까지로 범위를 지정하면 탐색이 편함!!)
'코딩 테스트 준비 > BOJ' 카테고리의 다른 글
[BOJ_Python] 17626_Four Squares (0) | 2023.03.26 |
---|---|
[BOJ_Python] 16206_롤케이크 (0) | 2023.03.24 |
[BOJ_Python] 21314_민겸 수 (0) | 2023.03.22 |
[BOJ_Python] 20300_서강근육맨 (0) | 2023.03.21 |
[BOJ_Python] 11508_2+1 세일 (0) | 2023.03.19 |