Algorithm/Baekjoon

[백준 파이썬 1100번] 하얀칸 알고리즘 python

Codexx 2022. 4. 13. 23:44

문제 :

  체스판이 8*8로 주어지고 하얀칸 위에 몇 개의 말이 있는지 출력하는 문제

 

답 :

ches=[input() for i in range(8)] 
count = 0

for row in range(8): # row는 행 인덱싱에 활용
    for col in range(8): # col은 열 인덱싱에 활용
        if (row+col) % 2 == 0 and ches[row][col] == 'F': #하얀칸 위치 확인과 체스말 존재 확인
            count += 1
print(count)

 

주목할 부분 :

  1. 행(row)과 열(col)이 8*8로 정해짐

  2. 열과 행의 인덱싱 방법

    [문자열,문자열,,,문자열]으로 받아 2차원 배열의 기능을 사용하여 인덱싱한다.

문자열리스트 = ['사과','당근','수박']
문자열리스트[0] 
>>> 사과

문자열리스트[0][0] (= '사과'[0])
>>> 사

   3. 흰색 체스판의 위치를 잡아 'F'의 일치 여부 확인하기

       -이 부분은 처음이라면 접근하기 힘들 수도 있다(나는 그랬다)

       -흰색 칸의 위치들을 보면 [0][0], [0][2]..[1][1]..로 진행되고 있어,

       -1,2차원 인덱스 값의 합에 2로 나눈 나머지가 0인 것을 알 수 있다.

for 행_idx in range(8): # 행 인덱스
  for 열_idx in range(8): # 열 인덱스
	#흰색 칸인지와 체스말이 있는지
	if (행_idx + 열_idx) % 2 == 0 and 문자열_리스트[행_idx][열_idx] == 'F' : 
	  count += 1 # 흰색 칸 위에 체스 말 카운트