728x90
반응형
코딩테스트 해설
숫자로만 이루어진 문자열 s가 있습니다. (0 <= s.length < 1,000) 아래의 조건을 모두 만족하는 숫자를 '멋쟁이 숫자'라고 합니다.
[조건]
- 길이가 3인 s의 substring을 10진수로 읽은 숫자이다.
- 각 자리의 숫자가 모두 같다.
문자열s를 입력받아 멋쟁이 숫자를 리턴하는 함수를 만들어주세요.
- 만약, 멋쟁이 숫자가 여러 개 존재하는 경우에는 가장 큰 수를 리턴합니다.
- 만약, 가장 큰 멋쟁이 숫자가 000이라면 0을 리턴합니다.
- 만약, 멋쟁이 숫자가 존재하지 않다면 -1을 리턴합니다.
작성 코드
import re
pattern = r"(\d)\1{2}"
def solution(s):
result = re.findall(pattern, s)
if not result:
return -1
return max(result) * 3
접근 방식
- 정규식을 이용하여 문자열 s의 정수값에서, 3개의 연속된 정수를 가지는 값만을 추출하였다.
- 반환된 result가 없다면 -1을 , 있다면 해당 result의 값의 max 값 * 3 을 한다
- max 값 즉, 문자열 n 을 3번 곱하여 111, 222, 333, ~ , 999 와 같은 형태로 반환 한다
개선 사항

728x90
반응형
'알고리즘' 카테고리의 다른 글
[ 알고리즘 ] 동적계획법(DP;Dynamic Programming) (0) | 2024.10.17 |
---|---|
[ Python ] 1208번 : 부분수열의 합 2 (1) | 2024.08.21 |
[ Python ] 6603번 : 로또 (0) | 2024.08.20 |
[ Python ] 15657번 : N과 M (8) (0) | 2024.08.20 |
[ Python ] 15655번 : N과 M (6) (0) | 2024.08.20 |