728x90

 

https://www.acmicpc.net/problem/1100

 

1100번: 하얀 칸

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

www.acmicpc.net

 

풀이 과정

0번째 줄, 2번 째 줄 ... (짝수 번째 줄) 은 하얀색 칸으로 시작,

1번째 줄, 3번 째 줄 ... (홀수 번째 줄) 은 검은색 칸으로 시작하여 칸이 번갈아 나온다.

 

시작점이 다른 것을 이용하여 2차원 리스트 순회를 하면 된다.

 

아래 답 부분에서 [i][j] 형식이 아닌 [i][0][j]형식으로 인덱싱을 하는 이유는 중간중간 print 해보면 알겠지만 F.F.. 같은 하나하나의 줄들이 F와 .이 구분되어 리스트에 넣어지지 않고 하나의 줄 자체가 문자열 하나로 넣어져 있다.

따라서 2차원 리스트엔 원소 하나씩 밖에 들어가 있지 않은 것으로 표현된다.

 

따라서 [0]을 넣어주고 문자열 인덱싱을 해주어야 한다.

 

# 말 위치 입력받기      
horses = []
for i in range(8):
  horses.append(list(input().split()))

# 짝수번째 줄은 흰색이 먼저, 홀수번째 줄은 검은색이 먼저 배치
cnt = 0
for i in range(8):
    if i % 2 == 0:  # 짝수줄인 경우
        for j in range(8):
            if j % 2 == 0:
                if horses[i][0][j] == "F":  # 2차원 리스트의 요소 하나하나는 ''로 감싸진 하나의 문자열 -> 문자열 인덱싱을 해야하므로[0]이 중간에 낀 것
                    cnt += 1
    else:   # 홀수줄인 경우
        for j in range(8):
            if j % 2 == 1:
                if horses[i][0][j] == "F":
                    cnt += 1

print(cnt)

 

코드는 깃허브에서 확인 가능합니다.

깃허브 링크

https://github.com/jaehhhk/algorithm

 

GitHub - jaehhhk/algorithm: 알고리즘 공부

알고리즘 공부. Contribute to jaehhhk/algorithm development by creating an account on GitHub.

github.com

 

728x90

+ Recent posts