왜 indexerror가 뜨는거죠?

조회수 413회

분명 m n 의 최소값은 8 이라 8 - 7 은 1 이고 1 - 0 은 1일텐데 왜인지 모르겠습니다

stwiwh = [['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W']]
stwibl = [['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B']]
mnn = input()
m = int(mnn.split()[0])
n = int(mnn.split()[1])
counter = 0
board = []
#아래는 제출용
while counter == m - 1 :
  line = input()
  board.append([])
  for a in range(0,len(line)) :
    board[counter].append(line[a])
  counter += 1
min = 2501
# 아래는 테스트용
#board = [['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','W']]
alp = m - 7
bet = n - 7
for a in range(0,alp) :
  for b in range(0,bet) :
    whcounter = 0
    blcounter = 0
    done = False
    al = a + 8
    be = b + 8
    stancouY = -1
    stancouX = -1
    for c in range(a,al) :
      if done == True :
        break
      stancouY += 1
      stancouX = -1
      for d in range(b,be) :
        stancouX += 1   
        if board[c][d] != stwiwh[stancouY][stancouX] :
          whcounter += 1
        if board[c][d] != stwibl[stancouY][stancouX] :
          blcounter += 1
        if whcounter > min and blcounter > min :
          done = True
    if whcounter < min or blcounter < min :
        if whcounter < blcounter :
          min = whcounter
        else :
          min = blcounter

if min == 2501 :
  print(0)
else :
  print(min) 

더 이상한것은,

for e in range(8,51) :

  for f in range(8,51) :
    a = str(e)
    b = str(f)

    stwiwh = [['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W']]
    stwibl = [['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B']]
    mnn = a + ' ' + b
    print('mnn :',mnn)
    m = int(mnn.split()[0])
    n = int(mnn.split()[1])
    counter = 0
    board = []
    #아래는 제출용
    for a in range(0,m) :
        board.append([])
        for b in range(0,n):
            board[a].append('W')
    min = 2501
# 아래는 테스트용
#board = [['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','W']]
    alp = m - 7
    bet = n - 7
    for a in range(0,alp) :
      for b in range(0,bet) :
        whcounter = 0
        blcounter = 0
        done = False
        al = a + 8
        be = b + 8
        stancouY = -1
        stancouX = -1
        for c in range(a,al) :
          if done == True :
            break
          stancouY += 1
          stancouX = -1
          for d in range(b,be) :
            stancouX += 1   
            if board[c][d] != stwiwh[stancouY][stancouX] :
              whcounter += 1
            if board[c][d] != stwibl[stancouY][stancouX] :
              blcounter += 1
            if whcounter > min and blcounter > min :
              done = True
        if whcounter < min or blcounter < min :
            if whcounter < blcounter :
              min = whcounter
            else :
              min = blcounter

    if min == 2501 :
      print(0)
    else :
      print(min) 

이런 코드를 실행해보면 에러가 하나도 발생하지 않는단 것입니다. 도데체 무었이 문제인 거죠?

1 답변

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

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

(ಠ_ಠ)
(ಠ‿ಠ)