Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요! \
Is MAC48 Address?
mac 48 주소인가요?
문제를 보겠습니다.
일단, mac주소에 대해 설명을 하는 듯 하군요.
MAC에 대한 위키백과 설명을 참고하시면 될것 같습니다.
The standard (IEEE 802) format for printing MAC-48 addresses in human-friendly form is six groups of two hexadecimal digits (0 to 9 or A to F),
이 말이 보이시나요? 이 설명을 보면, Mac48주소는 0-9의 숫자와 A-F까지의 알파벳 이 두 16진수 문자의 두 그룹으로 구성되며
이 두 그룹의 조합으로 총 6개의 결과물들이 '-'으로 이어진 주소를 뜻 한다고 합니다.
예를 들어 01-23-45-67-89-AB , 00-1B-63-84-45-E6 이런식으로 구성된다는 것이죠.
간단합니다. 이러한 조건이 합당한지 확인해서 T/F로 리턴해달라는 문제입니다.
답을 볼까요?
boolean isMAC48Address(String inputString) {
Pattern p = Pattern.compile("^([0-9a-fA-F]{2}[-]){5}([0-9a-fA-F]{2})$");
Matcher check = p.matcher(inputString);
return check.find();
}
이런 문제들은 항상 Pattern compile이 떠나질 않습니다.
"^([0-9a-fA-F]{2}[-]){5}([0-9a-fA-F]{2})$"
무조건 핵심은 이 정규식 표현이죠.
0-9, a-f, A-F 가 두개로 오고 -로 이어집니다. 이러한게 총 5개!!
왜냐하면 맨 마지막 것은 -가 붙으면 안되자나요.
그리고 나서 마지막도 같은 조건으로 검사.
그룹은 총 2개로 나눠졌네요.
이제 이러한 정규식을 inputString을 확인해주고 검사를 하면 완료입니다.
정규식 머리 짜내라 고생했던 기억이 있지만, 막상 정규식 표현을 보면 간단하고 쉬운 작업입니다.
다른 사람들의 코드를 확인해 보겠습니다.
*이제 엘리트 분들의 답안을 감상하자... *
JAVA
boolean isMAC48Address(String inputString) {
return inputString.matches("^([0-9A-F][0-9A-F]-){5}[0-9A-F][0-9A-F]$");
}
이 분은 matcheS를 활용하여 바로 검사를 때리셨네요. 이 방법이 좋은것 같습니다.
Python3
def isMAC48Address(s):
return bool(re.match(('^' + '[\dA-F]{2}-' * 6)[:-1] + '$', s))
파이썬은 언제나 경이롭습니다만, 이번에는 비슷하네요. match()함수를 사용하는 것 같군요.
JS
isMAC48Address = s => /^([0-9A-F]{2}-){5}[0-9A-F]{2}$/.test(s)
뭐죠 이 영롱한 한줄은.. 비슷한거 같으네요..
공감 버튼 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!
부탁드려요 돈드는거 아니잖아요~
'Algorithm > Java' 카테고리의 다른 글
#48_Code Signal Arcade >> is Digit (0) | 2020.06.10 |
---|---|
#46_Code Signal Arcade >> Elections Winners (0) | 2020.05.18 |
#45_Code Signal Arcade >> Build Palindrome (0) | 2020.04.08 |