소스 코드

T = int(input())

for tc in range(1,1+T):

    n,m = map(int,input().split())

    # 밭
    lst = [list(1 for _ in range(n)) for q in range(m)]

    # 심은 콩의 수
    res = 0

    for w in range(m):
        for e in range(n):

            # 콩을 못 심는 곳이 아니고
            if lst[w][e] == 1:

                # 범위 안에 있으면
                # 거리가 2인 지점을 콩을 심지 못하게 0 으로 갱신
                if w+2 < m:
                    lst[w+2][e] = 0
                if e+2 < n:
                    lst[w][e+2] = 0
                    
                # 콩의 수 추가
                res += 1

    print('#{} {}'.format(tc,res))

 


해결 방법

1. x,y의 위치(콩을 심을 위치)와 2만큼의 거리에 있는 곳은 콩을 심지 못함

ex) x,y가 0,0일 때, [0,2]와 [2,0]은 콩을 심지 못함

 

2. 이를 반복하면, 4x4 크기의 밭일 때

X X
X X
X X
X X

의 형태로 콩을 심을 수 있음(ㅇ = 콩을 심은 곳, X = 콩을 심지 못하는 곳)


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.