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


문제

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


입력

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


출력

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


코드


👩‍💻 풀이과정

  • 체스판 배열을 입력받아서 List에 한 줄씩 저장
  • i로 한 줄씩 꺼내어 비교
    • i가 짝수이면 홀수 번째 줄 -> j로 한 칸씩 비교
      • 홀수 번째 줄이면 홀수 번째 칸이 흰색
      • j가 홀수일 때 그 칸이 F이면 piece + 1
    • i가 홀수이면 짝수 번째 줄 -> k로 한 칸씩 비교
      • 짝수 번째 줄이면 짝수 번째 칸이 흰색
      • k가 짝수일 때 그 칸이 F이면 piece + 1


👀 주의할 점

  • List의 종류
    • ArrayList
      • 동적 크기 배열, 객체가 인덱스로 관리
      • 빈번한 객체 삭제와 삽입이 일어나는 경우엔 적절하지 않음
      • 인덱스 검색이나 맨 마지막에 객체를 추가하는 경우 사용
    • Vector
      • ArryaList와 동일한 내부 구조
      • 동기화된 메서드로 구성
    • LinkedList
      • 인접 참조를 링크해서 체인처럼 관리
      • 특정 인덱스의 객체 삭제하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않음
      • 빈번한 객체 삭제와 삽입이 일어나는 경우 좋은 성능 발휘
  • for문, if문 여러번 쓸 때 헷갈리지 않도록 주의…ㅎ
  • String에서 특정 인덱스의 문자 뽑아낼 때 .charAt(index)