본문 바로가기

알고리즘

[구현] 백준 1100번 하얀 칸 Python 풀이

728x90
반응형

문제 요약

8*8 크기의 체스판은 가장 왼쪽 위칸(0,0)이 하얀색으로 시작하여 검정 칸과 하얀 칸이 번갈아 나온다.

하얀 칸 위에 있는 말이 몇 개인지 출력하는 프로그램을 작성하라.

백준 1100번 문제 바로가기

입력

첫 번째 줄부터 8개의 줄에 체스판의 상태 입력

'.'은 빈 칸, 'F'는 말이 있는 칸

출력

첫째 줄에 문제의 정답 출력

입출력 예시

입력 출력
.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

약 30분 소요

S = []
count = 0

for _ in range(8):
    S.append(input())
for i in range(8):
    for j in range(8):
        if i % 2 == 1 and j % 2 == 1 and S[i][j] == "F":
            count += 1
        if i % 2 == 0 and j % 2 == 0 and S[i][j] == "F":
            count += 1
print(count)

피드백

.append()로 리스트에 입력값을 넣을 때는 input().split()말고 input()으로 해야 리스트[i][j]로 접근할 수 있음

 

내가 찾은 패턴

  • 짝수줄에서 0과 짝수번째 글자에 "F"가 오면 count
  • 홀수줄에서 홀수번째 글자에 "F"가 오면 count

다른 사람 풀이 참고

chess = [input() for _ in range(8)]
cnt = 0

for y in range(8):
    for x in range(8):
        if y%2 == x%2 and chess[y][x] == 'F':
            cnt += 1

print(cnt)

 

  • 입력 한 줄 처리
  • x % 2 == y % 2로 코드를 줄임
728x90
반응형