greenhelix
greenhelix
greenhelix
07-23 07:23
  • 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

#53_Code Signal Arcade >> Valid Time
Algorithm/Java

#53_Code Signal Arcade >> Valid Time

2020. 7. 7. 17:20

Code Signal -Arcade

코드시그널

아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당. 
주로 자바 위주로 풀이를 올릴예정이고,

추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...

되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!


Valid Time
유효한 시간

 

이 문제는 주어진 시간의 텍스트가 24시간제에 맞는 표현인지 아닌지 확인해달라는 것입니다. 

26:10 이라면 false 를 리턴하라는 것이죠. 

 

답안입니다.

boolean validTime(String time) {
    return time.matches("^([01][0-9]|[2][0-3]):([0-5][0-9])$");
}

정규식 표현으로 풀이할 수 있겠네요. 

포맷의 boolean문제이니 간단하게 String time의 문자열을 matches메서드로 풀어줍니다. 

 

정규식 표현이 항상 문제가 되죠. 

^([01][0-9]|[2][0-3]):([0-5][0-9])$

이 정규식 표현은 각 시간 분 의 한자리 위치마다 제한되는 숫자값의 범위를 표현해 주는 것입니다. 

그룹 세부표현 설명
([01][0-9]|[2][0-3]) [01] 시간의 십의 자리는 0 또는 1 된다.
[0-9] 시간의 일의 자리는 0부터 9가 된다.
|
또는
[2] 시간의 십의 자리는 2가 될수 있다.
[0-3] 시간의 일의 자리는 2일때, 0부터 3이 된다.
:  
([0-5][0-9]) [0-5] 분의 십의 자리는 0부터 5가 된다.
[0-9] 분의 일의 자리는 0부터 9가 된다. 

이런 식으로 이해하시면 됩니다. 

 

 

 


이제 엘리트 분들의 답안을 감상하자... 

 

JAVA

Object validTime(String s) {
    return s.matches("([01]\\d|2[0-3]):[0-5]\\d");
}

이 분도 matches를 사용한건 마찬가지군요. 그런데 정규식 표현이 다릅니다. 

\d는 숫자를 의미하므로(0-9) 비슷하네요. 

Python3

def validTime(time):
    h,m=map(int,time.split(":"))
    return 0<=h<24 and 0<=m<60

파이썬의 경우는 split()메서드를 통해서 일단 문자열 값을 분할 한뒤, map()메서드를 통해서 h와 m 변수에 각 값을 넣어주는 형식으로 했고 이를 Return에서 범위 연산을 통해 True/ False를 구분하는 방법을 사용했네요. 간단하고 좋은거 같습니다. 훨씬 빨라 보이기도 하고...

JS

validTime = t => /^([0-1]\d|2[0-3]):[0-5]\d$/.test(t);

정규식 표현입니다. test()를 통해서 타당한지 확인하는 코드입니다. 

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

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

'Algorithm > Java' 카테고리의 다른 글

#54_Code Signal Arcade >> Sum Up Numbers  (0) 2020.07.08
#52_Code Signal Arcade >> Longest Word  (0) 2020.07.02
#51_Code Signal Arcade >> Delete Digit  (0) 2020.07.01
    'Algorithm/Java' 카테고리의 다른 글
    • #55_Code Signal Arcade >> Different Squares
    • #54_Code Signal Arcade >> Sum Up Numbers
    • #52_Code Signal Arcade >> Longest Word
    • #51_Code Signal Arcade >> Delete Digit
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바