본문 바로가기
알고리즘

[BAEKJOON] 1100 하얀 칸

by mAlfred 2023. 11. 17.
반응형

문제

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

해당 문제는 체스 판에 대한 문제인데 

흰색 칸에 체스가 몇개가 있는 지 개수를 카운팅하는 문제이다.

당연하게도 이 문제는 리스트 (배열)을 이용해야되는 문제였으며,

문제에서는 0,0은 흰색이기에 흰색부터 시작한다는 것을 유의하며 반복을 돌리면 풀 수 있는 문제이다.

당연하게도 한 줄이 첫 시작이 흰색이면 다음 줄은 검은색으로 시작한다는 것만 잘 주의하자.

 

import sys

f = True # 흰
c = 0

for i in range(8):
    p = list(sys.stdin.readline().strip())
    if f: # 흰
        for j in range(0, len(p), 2):
            if(p[j] == 'F'):
                c += 1
    else:
        for j in range(1, len(p), 2):
            if(p[j] == 'F'):
                c += 1
    f = not f

print(c)

 

어쩌피 8x8크기 이기에 8번 줄만 받으면 되었다.

그렇기에 반복은 8번을 돌리고 한 줄을 받아 그 줄을 받을 때에 f라는 변수로 시작이 흰인지 검인지를 체크하면 되는 문제

하지만 다음 칸은 색상이 바뀌기에 +=2씩 해주어야된다.

반응형

'알고리즘' 카테고리의 다른 글

[BAEKJOON] 1212 8진수 2진수  (0) 2023.11.17
[BAEKJOON] 1173 운동  (0) 2023.11.17
[BAEKJOON] 15964 이상한 기호  (0) 2023.11.16
[BAEKJOON] 8958 OX퀴즈  (0) 2023.11.15
[BAEKJOON] 2501 약수 구하기  (0) 2023.11.14