[Python] BOJ 1100/ 하얀 칸

Jerry·2023년 4월 24일
0

알고리즘

목록 보기
24/25

문제
체스판은 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

예제 입력 2
........
........
........
........
........
........
........
........

예제 출력 2
0

예제 입력 3
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF

예제 출력 3
32

예제 입력 4
........
..F.....
.....F..
.....F..
........
........
.......F
.F......

예제 출력 4
2

문제 해결 포인트
짝수번 줄은 흰색부터 시작, 홀수번 줄은 검은색부터 시작, 짝수번 줄에 짝수번 열이 'F'이면 cnt 증가, 홀수번 줄에 홀수번 열이 'F'일 때 cnt 증가.

코드

maps = [ input() for _ in range(8) ]
start = 'w'
cnt = 0

for i in range(len(maps)) : 
    if i % 2 != 0 : start = 'b'
    else : start = 'w'
    for j in range(len(maps[i])) : 
        if start == 'w' and j % 2 == 0 and maps[i][j] == 'F' : 
            cnt += 1
        elif start == 'b' and j % 2 != 0 and maps[i][j] == 'F' : 
            cnt += 1
            
print(cnt)
profile
함께 일 하고 싶은 개발자가 되길 희망합니다.

0개의 댓글