# 3. APS/백준

백준 # Python_1100_하얀 칸

둥굴둥굴둥굴레차 2021. 9. 14. 22:47
 

1100번: 하얀 칸

체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램

www.acmicpc.net

문제

체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 8개의 줄에 체스판의 상태가 주어진다. ‘.’은 빈 칸이고, ‘F’는 위에 말이 있는 칸이다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제 입력 1

.F.F...F
F...F.F.
...F.F.F
F.F...F.
.F...F..
F...F.F.
.F.F.F.F
..FF..F.

예제 출력 1

1

알고리즘 분류

 


풀이 과정

 

나는 이 문제를 처음 풀었을 때 조금 헤매었다.

"검정 칸과 하얀 칸이 번갈아가면서 색칠되어있다."는 것을 아래 그림과 같이 이해했었기 때문이다.

 

ㅋㅋㅋㅋ... 그림 죄송합니다...^.ㅠ

 

근데 알고보니 아래의 그림과 같은 모습을 이야기한 것이었다.

 

그리고 구글링 하다 아래와 같은 사실을 알아내었는데,

흰 색 부분의 i, j 좌표를 더하면 항상 0 혹은 짝수가 된다는 점이었다.

 

따라서 i+j가 짝수일 때~ 이렇게 푼 사람이 있었다. 

자세한 코드는 아래 링크를 클릭!

 

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

츄르사려고 코딩하는 코집사입니다. 1. [백준 알고리즘] 백준 1100번 하얀 칸 파이썬(Python) 1) 문제번호 : 1100번 2) 문제 출처 https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8*8크기..

yongku.tistory.com


나의 풀이

import sys

# 8*8의 input값을 받아줍니다.
matrix = [list(sys.stdin.readline()) for _ in range(8)]

# F를 세어줄 cnt 변수
cnt = 0
# matrix의 짝수열과 홀수열에서의 기능을 달리해주기 위한 turn 변수
turn = 0

for i in matrix:
    turn +=1
    # matrix의 홀수열에 대한 for문
    if turn%2:
    	# 흰 칸이 0부터 시작하기 때문에 0부터 체크한다.
        for j in range(0, len(i), 2):
            if 'F' == i[j]:
                cnt += 1
    # matrix의 짝수열에 대한 for문
    else:
    	# 흰 칸이 1부터 시작하기 때문에 1부터 체크한다. 
        for j in range(1, len(i), 2):
            if 'F' == i[j]:
                cnt += 1

print(cnt)

 

'# 3. APS > 백준' 카테고리의 다른 글

백준 # Python_17298_오큰수  (1) 2021.09.19
백준 # Python_17608_막대기  (0) 2021.09.18
백준 # Python_2798_블랙잭  (0) 2021.09.02
백준 # Python_2501_약수 구하기  (0) 2021.09.02
백준 # Python_2750_수 정렬하기  (0) 2021.07.30