ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2/16기록 - 백준 1100
    Algorithm 2022. 2. 16. 09:24
    728x90

    며칠간 스키장을 다녀오면서 코딩 공부를 못했다. 그래서 오늘은 꼭 해야지라는 생각으로 알고리즘 문제를 풀어보았다. 체스 문제를 2개 풀어보았는데, 백준 1100문제부터 포스팅 해보려 한다.

     

     

    체스판 8*8 안에서 하얀칸과 검정칸을 구분하고 하얀칸에 F가 있으면 카운팅해주면 되는 문제이다. 

    체스판이 (0,0)에서 하얀판으로 시작한다고 문제에서 조건을 주었으므로, 다음줄 (1,0)은 검정판부터 시작하게 된다. 이러한 원리를 따라 가보면 (0,0),(0,2),(0,4) ... (1,1),(1,3),(1,5) ... (8,8) 이런식으로 (x,y)의 경우 x+y가 짝수의 경우만 하얀칸이 위치하게 된다는것을 알수 있다. 

     

    알고리즘 생각

    1. 체스판을 선언하기 위해 8*8 이차원 배열을 String type으로 선언한다.

    2. 반복문 안에서 8*8을 모두 String으로 입력받는다.

    3. 이중반복문 안에서 체스배열에 입력받은 String을 substring(i,i+1)을 사용하여 하나씩 다 쪼개어 체스 배열에 넣어준다.

    4. (i+j) % 2 == 0과 equals() 메소드를 사용하여 체스배열에 F가 오면 count++ 시켜준다.

    5. count를 출력

     

    이렇게 해결할 수 있었다. String 타입을 지키기 위해 charAt() 보다는 substring(i,i+1)을 사용하여 String 타입이지만 문자 하나하나를 잘라낼 수 있다는 점!!!

     

    만약 charAt()을 사용하고자 할 경우 chess배열을 int형 타입으로 해주고, equals메소드 대신에 chess[i][j] == 'F' 형식으로 문제를 풀어낼 수도 있다.

     

    이어서 심화된 체스문제를 하나 더 풀어보자.

     

    -> 백준 1018문제

    728x90
Designed by Tistory.