[알고리즘] 이상한 369

짱구석·2021년 2월 5일
0
post-thumbnail

문제

개념

  1. 1~n까지 loop
  2. 해당 숫자를 문자열로 분리 loop
  3. 해당 글자가 0이거나 3의 배수가 아니면 return 0
  4. 3번 조건이 아니면 return 1
  5. 2~4을 카운트

코드

def game_369(n):

    def check_only_369(n):
        for c in str(n):
            if int(c) == 0 or int(c) % 3 != 0:
                return 0
        return 1

    cnt = 0
    for i in range(1,n+1):
        cnt += check_only_369(i) 
    return cnt 

if __name__ == '__main__':

    print(game_369(93))
    # 10

정규식으로도 풀어보자

개념

  1. 정규표현식 = ^[369]+$ => 3,6,9만 포함하는 문자열
  2. 해당 문자열이 정규표현식과 일치하면 카운트

코드

import re
def game_369(n):

    cnt = 0
    p = re.compile('^[369]+$')
    for i in range(1,n+1):
        if re.search(p, str(i)):
            cnt += 1 
    return cnt 

if __name__ == '__main__':

    print(game_369(93))
    # 10

정규표현식을 사용하면 조건이 있는 문자열를 판단할 때 더 간단하게 해결할 수 있다.

Reference

제주 코딩 베이스 캠프 코딩 페스티벌 python 100제

0개의 댓글