본문 바로가기

알고리즘

[ Python ] 토스 : 멋쟁이 숫자

728x90
반응형

 

코딩테스트 해설

숫자로만 이루어진 문자열 s가 있습니다. (0 <=  s.length < 1,000) 아래의 조건을 모두 만족하는 숫자를 '멋쟁이 숫자'라고 합니다.

[조건]

  1. 길이가 3인 s의 substring을 10진수로 읽은 숫자이다.
  2. 각 자리의 숫자가 모두 같다.

문자열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

접근 방식

  1. 정규식을 이용하여 문자열 s의 정수값에서, 3개의 연속된 정수를 가지는 값만을 추출하였다.
  2. 반환된 result가 없다면 -1을 , 있다면 해당 result의 값의 max 값 * 3 을 한다
  3. max 값 즉, 문자열 n 을 3번 곱하여 111, 222, 333, ~ , 999 와 같은 형태로 반환 한다

개선 사항


728x90
반응형