Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요! \
First Digit
첫번째 숫자.
문제는 위와 같이 제일 왼쪽 숫자를 찾는 것입니다. 문자를 왼쪽에서 오른쪽으로 읽었을때, 처음 나오는 숫자를 뽑아내라는 것입니다.
전형적인 정규식 테스트네요.
예를 들어 이런 경우 1이 제일 먼저 나오는 숫자이니 1 을 리턴해주라는 것이고, " " 으로 감싸져 있는 것을 보아 문자로 리턴이네요.
답안을 볼께요.
char firstDigit(String inputString) {
System.out.println(inputString.replaceAll("[^a-zA-Z]","")); // 문자열만 뽑아내기.
// ReplaceALl을 쓰면, 인자값이 두개 받는데, 뒤에 것을 빈칸으로 받아들이면,
// 그곳에 해당 조건에 들어가는 값들이 알아서 들어가있는다.
System.out.println(inputString.replaceAll("[^0-9]","").charAt(0)); // 숫자만 뽑아내기
return inputString.replaceAll("[^0-9]","").charAt(0);
}
저도 찾아보던중 발견한 걸로 기억합니다.
테스트를 돌려보면 어떻게 빼지는지 더 쉽게 볼수 있어요.
이해가 되시나요.. reaplceAll() 메서드를 통해서, 정규식 표현을 넣어주면 정규식의 조건대로
빼집니다.
같은 방법으로, 숫자도 빼내는 것이죠. 그리고 나서
charAt(0)을 하여 첫번째 숫자만 리턴.. 그러면 끝입니다.
**
문자열에 replaceAll() 을 통해, 조건과 바꾸는 기준 값을 쓴다.
"[^a-zA-Z]" :: 소문자 대문자 알파벳으로만 나눈다.
"" :: 기준은 그냥 한글자씩. ! 만약 다른 특정 문자가 있다면 그것으로.
"[^0-9]" :: 숫자인경우 숫자만 빼내게 시킴.
나누는 기준은 동일 한숫자 한숫자 다 빼내서 바꾼다.
이후, charAt(숫자)를 통해 특정 위치 숫자나 문자를 빼는데, 여기서는 왼쪽 첫글자니깐 간편하게 0이 된다.
제일 오른쪾이면,,, 아마 다른방법으로... ㅎㅎ 반복문이나 그런거 쓰면 되겠죠... ?
일단 다시 복습하는거지만 휴.. 가물가물해지네요.
아무튼 끝.
이제 엘리트 분들의 답안을 감상하자...
Python3
def firstDigit(inputString):
for i in inputString:
if i.isdigit():
return i
JS
function firstDigit(s) {
return s.match(/\d/)[0]
}
공감 버튼 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!
부탁드려요 돈드는거 아니잖아요~
'Algorithm > Java' 카테고리의 다른 글
#36_Code Signal Arcade >> Different Symbols Naive (0) | 2020.02.23 |
---|---|
#34_Code Signal Arcade >> Extract Each Kth (0) | 2020.01.30 |
#33_Code Signal Arcade >> Strings Rearrangement (0) | 2020.01.14 |