Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!
Variable Name
가능한 이름
가능한 이름인지 확인해주는 문제입니다.
저번 문제를 답습하여, 정규식을 사용하면 될거같은 각이 나왔습니다.
정규식을 쓰기전에 어떠한 규칙을 넣어줘야할지 고민하게 됩니다.... 나란 녀석 수듄 ... 머리에 떠오르질 않음.
일단 정리를 해봤습니다. (막 쓰기보단 고민하고 하는게 좋더군요. )
생각해본 규칙은 간단했습니다.
- 1. 영어나 숫자 _(underscore) 가 포함이 가능하다.
- 2. 숫자로 시작할 수 없다.
- 3. 이름의 길이는 10자 이하
- 4. 그외 특수문자나 다른 언어는 불가능.
이렇게 생각한뒤, 저번 문제의 코드를 확인하며 바로 작성을 했습니다.
볼까요?
boolean variableName(String name) {
return name.matches("([a-zA-Z_])(\\w{0,9})");
}
저도 드디어 한줄코드를 만들어 보네요.
matches메서드를 활용하여 정규식 표현으로 검사를 해줍니다.
그리고 정규식의 기준에 합당하면 true를 리턴, 그렇지 않다면, false를 리턴합니다.
자.... 이제 정규식 시간입니다. ( 언제 다 외울지 저도 모르겠음.. 안외워지는게 함정)
"([a-zA-Z_])(\\w{0,9})"
다 필요없고 이쯤되면 정규식 표현에 대해 다뤄야겠네요. 무지 중요한거같음..
[a-zA-Z_] 를 통해서 일단 알파벳과 "_" 을 가져올 수 있게 하였습니다. 대소문자 상관없음.
이렇게 하고 그룹을 일단 닫습니다.
여기서 의문 \w을 통해서 알파벳과 문자 그리고 _ 까지 다 할 수 있었는데 왜 안썼느냐,
따로 [] 를 써서
앞에 써줘야합니다. 왜냐하면 숫자로는 시작할 수 없으니깐요!
아무튼 그렇게 해주고 뒤에는 새로운 그룹조건을 내걸어서
\w을 사용해주고, 이 문자는 반복이 {0, 9} 으로 설정합니다. 이렇게 하면 총 10자의 조건에 들어갑니다.
이렇게 하면 주어진 조건에 맞는 문자열만 찾고 그것이 맞으면 t 다르면 f를 리턴합니다.
이상입니다.
다른 분의 답안을 확인해보니 제 정규식이 틀렸다는 것을 알게 되었습니다.
왜냐하면 { 0, 9 } 이 부분이 저는 10자 규정에 해당하는 줄 알았으나, 그렇지 않은 듯 합니다.
왜냐하면 문제를 다시 잘 보시면, 이미 조건이 주어진 상태인것을 알 수 있었습니다. 내수듄...
그렇다면 다시 답의 정규식은 이렇게 바뀌게 되었습니다.
([a-zA-Z_]\\w*)
이미 주어진 조건에 입력 문자가 10자 이하로 설정되어있으니, 굳이 반복 정규식은 필요없으니깐요.
그냥 처음 문자만 숫자 못오게 하고 나머지는 그냥 \w 조건을 넣어주면 장땡이었습니다.
끝.
JAVA
boolean variableName(String name) {
return name.matches("[a-zA-Z_][a-zA-Z0-9_]*");
}
JS
function variableName(name) {
return /^[a-z_]\w*$/i.test(name)
}
자바스크립트에서는 정규식을 사용하여 검사를 하였네요... test메서드가 따로 있나봅니다.??
Python3
def variableName(name):
return name.isidentifier()
isidentifier을 통해서,한방에 해냈내요..
https://www.w3schools.com/python/ref_string_isidentifier.asp
'Algorithm > Java' 카테고리의 다른 글
#28_Code Signal Arcade >> Alphabetic Shift (0) | 2019.12.03 |
---|---|
#26_Code Signal Arcade >> Even Digits Only (0) | 2019.11.30 |
#25_Code Signal Arcade >> Array Replace (0) | 2019.11.28 |