728x90
반응형
주어진 문자열이 MAC-48 주소 형식에 부합하는지 여부를 확인하는 것입니다.
MAC-48 주소는 네트워크 인터페이스를 식별하는 데 사용되는 고유한 식별자로, 휴먼 프렌들리한 형태로 표현될 때 여섯 그룹의 두 자리 16진수 숫자로 구성됩니다. 각 그룹은 하이픈(-)으로 구분되어 있습니다.
예를 들어, 유효한 MAC-48 주소는 다음과 같은 형태입니다: "01-23-45-67-89-AB".
문제에서 주어진 inputString이 MAC-48 주소 형식에 부합하는지 확인하는 함수를 작성해야 합니다. 유효한 MAC-48 주소의 특징은 다음과 같습니다:
길이는 정확히 17이어야 합니다.
그룹 간의 구분자는 하이픈(-)이어야 합니다.
각 그룹은 두 자리 16진수여야 합니다.
문자열이 위 조건을 모두 만족하면 true를 반환하고, 그렇지 않으면 false를 반환해야 합니다.
문제의 예시에서 "00-1B-63-84-45-E6"은 유효한 MAC-48 주소 형식이므로 true를 반환하고, "Z1-1B-63-84-45-E6" 및 "not a MAC-48 address"는 유효하지 않으므로 false를 반환합니다.
bool solution(string inputString) {
string[] stArr = inputString.Split('-');
if(stArr.Length != 6) return false;
foreach(string s in stArr){
if(s.Length != 2) return false;
if(!Char.IsLetterOrDigit(s[0])) return false;
if(!Char.IsLetterOrDigit(s[1])) return false;
if(Char.IsLetter(s[0]) && (Convert.ToInt32(s[0]) < 65 || Convert.ToInt32(s[0]) > 70) ) return false;
if(Char.IsLetter(s[0]) && Convert.ToInt32(s[0]) > 70 && (Convert.ToInt32(s[0]) < 97 || Convert.ToInt32(s[0]) > 102) ) return false;
if(Char.IsLetter(s[1]) && (Convert.ToInt32(s[1]) < 65 || Convert.ToInt32(s[1]) > 70) ) return false;
if(Char.IsLetter(s[1]) && Convert.ToInt32(s[0]) > 70 && (Convert.ToInt32(s[1]) < 97 || Convert.ToInt32(s[1]) > 102) ) return false;
}
return true;
}
string[] stArr = inputString.Split('-');: 입력 문자열을 하이픈(-)으로 나눠서 각 그룹을 배열에 저장합니다.
if(stArr.Length != 6) return false;: 그룹의 수가 6이 아니면 MAC-48 주소 형식에 부합하지 않으므로 false를 반환합니다.
foreach(string s in stArr) { ... }: 각 그룹에 대한 반복문입니다.
if(s.Length != 2) return false;: 각 그룹의 길이가 2가 아니면 MAC-48 주소 형식에 부합하지 않으므로 false를 반환합니다.
if(!Char.IsLetterOrDigit(s[0])) return false;: 각 그룹의 첫 번째 문자가 영숫자가 아니면 false를 반환합니다.
if(!Char.IsLetterOrDigit(s[1])) return false;: 각 그룹의 두 번째 문자가 영숫자가 아니면 false를 반환합니다.
if(Char.IsLetter(s[0]) && (Convert.ToInt32(s[0]) < 65 || Convert.ToInt32(s[0]) > 70)): 첫 번째 문자가 알파벳이면서 ASCII 코드값이 65보다 작거나 70보다 크면 false를 반환합니다.
if(Char.IsLetter(s[0]) && Convert.ToInt32(s[0]) > 70 && (Convert.ToInt32(s[0]) < 97 || Convert.ToInt32(s[0]) > 102)): 첫 번째 문자가 알파벳이면서 ASCII 코드값이 70보다 크고, 97보다 작거나 102보다 크면 false를 반환합니다.
if(Char.IsLetter(s[1]) && (Convert.ToInt32(s[1]) < 65 || Convert.ToInt32(s[1]) > 70)): 두 번째 문자가 알파벳이면서 ASCII 코드값이 65보다 작거나 70보다 크면 false를 반환합니다.
if(Char.IsLetter(s[1]) && Convert.ToInt32(s[0]) > 70 && (Convert.ToInt32(s[1]) < 97 || Convert.ToInt32(s[1]) > 102)): 두 번째 문자가 알파벳이면서 ASCII 코드값이 70보다 크고, 97보다 작거나 102보다 크면 false를 반환합니다.
모든 검사를 통과하면 true를 반환합니다. 즉, 주어진 문자열이 MAC-48 주소 형식에 부합하는 경우에만 true가 반환됩니다.
728x90
반응형
'CodeSignal' 카테고리의 다른 글
chessKnight (0) | 2024.01.05 |
---|---|
lineEncoding (0) | 2024.01.04 |
Elections Winners (0) | 2024.01.01 |
buildPalindrome (0) | 2023.12.31 |
isBeautifulString (0) | 2023.12.31 |