greenhelix
greenhelix
greenhelix
06-23 19:27
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#47_Code Signal Arcade >> Is MAC 48 Address?
Algorithm/Java

#47_Code Signal Arcade >> Is MAC 48 Address?

2020. 6. 9. 17:54

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)

뭐죠 이 영롱한 한줄은.. 비슷한거 같으네요..

공감 버튼 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!

부탁드려요 돈드는거 아니잖아요~

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'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
    'Algorithm/Java' 카테고리의 다른 글
    • #49_Code Signal Arcade >> Line Encoding
    • #48_Code Signal Arcade >> is Digit
    • #46_Code Signal Arcade >> Elections Winners
    • #45_Code Signal Arcade >> Build Palindrome
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바