본문 바로가기
CodeSignal

chessBoardCellColor

by Doromi 2023. 12. 17.
728x90
반응형

체스판에서 두 개의 셀(cell)이 주어질 때, 이 두 셀이 동일한 색인지 여부를 판단하는 문제입니다.

체스판은 8x8 격자로 이루어져 있으며, 각 셀은 열과 행의 조합으로 표현됩니다. 열은 알파벳으로 표현되며 A부터 H까지이고, 행은 숫자로 표현됩니다. 예를 들어, "A1"은 체스판의 왼쪽 아래 모퉁이에 위치한 셀을 나타냅니다.

문제에서는 주어진 두 셀 cell1과 cell2가 동일한 색인지 여부를 판단해야 합니다.

예를 들어, cell1 = "A1"이고 cell2 = "C3"이라면, 이 두 셀은 동일한 색이므로 결과는 true가 됩니다.

체스판에서 같은 대각선 상에 위치한 셀은 동일한 색을 가지게 됩니다. 이를 이용하여 두 셀이 동일한 색인지 여부를 판단할 수 있습니다.

 

bool solution(string cell1, string cell2) {
    char[] c1 = cell1.ToCharArray();
    char[] c2 = cell2.ToCharArray();
    if((int)c1[0] % 2 != 0 && (int)c2[0] % 2 != 0){
        if((int)c1[1] % 2 != 0 && (int)c2[1] % 2 != 0){
            return true;
        }
        else if((int)c1[1] % 2 == 0 && (int)c2[1] % 2 == 0){
            return true;
        }
        else return false;
    }else if((int)c1[0] % 2 == 0 && (int)c2[0] % 2 == 0){
         if((int)c1[1] % 2 != 0 && (int)c2[1] % 2 != 0){
            return true;
        }
        else if((int)c1[1] % 2 == 0 && (int)c2[1] % 2 == 0){
            return true;
        }
        else return false;
    }
    else{
         if((int)c1[1] % 2 != 0 && (int)c2[1] % 2 != 0){
            return false;
        }
        else if((int)c1[1] % 2 == 0 && (int)c2[1] % 2 == 0){
            return false;
        }
        else return true;
    }
    return true;
}

 

각 셀의 열과 행을 문자열에서 추출합니다.
두 셀의 열이 홀수인지(e.g., A, C, E) 짝수인지(e.g., B, D, F)를 확인하여 열의 색을 판단합니다.
열의 색이 동일한 경우, 각 셀의 행이 홀수인지(e.g., 1, 3, 5) 짝수인지(e.g., 2, 4, 6)를 확인하여 행의 색을 판단합니다.
열과 행의 색이 동일하면 두 셀은 동일한 색상을 가집니다.
코드의 구조는 다소 복잡하게 보일 수 있습니다. 간단하게 설명하면, 두 셀의 열과 행의 색상이 동일한 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. 코드는 각 셀의 열과 행에 대해 짝수와 홀수를 검사하여 색상을 판단하고, 최종적으로 두 셀이 동일한 색상을 가지면 true를 반환합니다.
bool solution(string cell1, string cell2) {
    int col1 = cell1[0] - 'A'; // Convert column character to index (0 to 7)
    int row1 = cell1[1] - '1'; // Convert row character to index (0 to 7)
    
    int col2 = cell2[0] - 'A';
    int row2 = cell2[1] - '1';

    return (col1 % 2 == row1 % 2) == (col2 % 2 == row2 % 2);
}
간결한 코드!
728x90
반응형

'CodeSignal' 카테고리의 다른 글

extractEachKth  (1) 2023.12.19
Circle of Numbers  (0) 2023.12.18
stringsRearrangement  (1) 2023.12.17
absoluteValuesSumMinimization  (1) 2023.12.16
depositProfit  (0) 2023.12.16