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 |