일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Spring
- HTTP
- 코딩테스트
- 프로그래머스
- java
- javascript
- 파이썬
- algorithm
- 탐욕법
- 2981
- Python
- Dijkstra
- Greedy
- codility
- 소수
- counting elements
- 라이브템플릿
- applicationeventpublisher
- error
- 알고리즘
- springboot
- 백준
- 2018 KAKAO BLIND RECRUITMENT
- beandefinitionstoreexception
- BFS
- 최단경로
- 문자열
- API
- brute force
- spring security
Archives
- Today
- Total
Altiora Petamus
문자열 다루기 기본 본문
🤔생각해보기
문제는 추가적인 부연 설명이 필요없을 정도로 아주 간단하므로 바로 풀이로 넘어가보자.
정규식
import re
def solution(s):
return bool(re.match(r"^(\d{4}|\d{6})$", s))
최종 결과를 Boolean 으로 return 해야하므로 bool() 을 사용해서 변환해준다.
중요한 건 내부 정규식인데, 구체적으로 설명하면 아래와 같다.
- ^ : 시작 문자
- & : 마지막 문자
- () : Group 설정
- \d : 모든 숫자만, [0-9] 와 같다.
- {n} : n개만
- | : or 연산자
- r : raw string, 백슬래시 문자를 해석하지 않고 남겨둔다.
문자열을 다루는 문제인만큼 정규식을 활용하는 방법 쪽을 개인적으로 더 선호하는 편이다.
내장함수 isdisit()
def solution(s):
return s.isdigit() and len(s) in (4, 6)
s 가 숫자인지, 길이가 4 또는 6 을 동시에 만족하는지 체크한다. (끝...)
주의할 점은 isdisit()
는 하나의 문자를 확인할 때도 쓸 수 있지만, 이 함수는 문자열 전체를 확인한다.
"123a45".isdisit() # False
"12345".isdisit() # True
그러므로 굳이 반복문으로 풀어서 스펠링 체크하듯이 쓰지 않아도 된다.
JavaScript 풀이
function solution(s) {
return /^[0-9]+$/.test(s) && [4, 6].includes(s.length);
}
정규식과 조합하여 해결하는 풀이법이다. 문법만 약간 다를 뿐 파이썬 풀이와 내용은 같다.
'1day-1algorithm' 카테고리의 다른 글
추석 트래픽 (0) | 2021.07.08 |
---|---|
벽 부수고 이동하기 (0) | 2021.07.05 |
Tape Equilibrium (0) | 2021.07.01 |
소수 찾기 (0) | 2021.06.29 |
베스트 앨범 (0) | 2021.06.26 |