[LeetCdoe] 1079. Letter Tile Possibilities (Python)

2025. 2. 20. 09:22·코딩 테스트
728x90

Problem

 

Solution

permutation
backtracking DFS

중복 순열을 사용한 문제.

중복 허용, 순서 고려하여 모든 경우의수를 따져야하지만 만들어진 string이 중복되면안된다.

permutation을 사용하되 결과를 set에 담아서 저장하도록했다.

 

백트래킹을 사용했지만 시간복잡도에서 최악의 경우 많이 소요될 수 있다.

Code

import itertools

class Solution:
    def numTilePossibilities(self, tiles: str) -> int:

        def generate(cur, used, result, r):
            if len(cur) == r:
                print(cur)
                result.add(''.join(cur))
                return
            
            for i in range(len(tiles)):
                if used[i]:
                    continue
                used[i]=True
                cur.append(tiles[i])
                generate(cur, used, result, r)
                used[i]=False
                cur.pop()

        if len(tiles) == 1:
            return 1

        result = set()
        for r in range(1, len(tiles)+1):
            used = [False] * len(tiles)
            generate([], used, result, r)

        return len(result)

 

Complexity

 

  • 시간 복잡도: O(2^n) (중복 순열이 있을 경우 최대 경우)
  • 공간 복잡도: O(n! + n) (순열을 저장하기 위한 공간)

 

 

backtracking 은 어려워..

728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩 테스트' 카테고리의 다른 글

[LeetCode] 889. Construct Binary Tree from Preorder and Postorder Traversal (Python)  (0) 2025.02.23
[LeetCode] 1980. Find Unique Binary String (Python)  (0) 2025.02.22
[LeetCode] 1415. The k-th Lexicographical String of All Happy Strings of Length n (Python)  (0) 2025.02.19
[LeetCode] 2375. Construct Smallest Number From DI String (Python)  (0) 2025.02.18
[LeetCode] 1718. Construct the Lexicographically Largest Valid Sequence (Python)  (0) 2025.02.16
'코딩 테스트' 카테고리의 다른 글
  • [LeetCode] 889. Construct Binary Tree from Preorder and Postorder Traversal (Python)
  • [LeetCode] 1980. Find Unique Binary String (Python)
  • [LeetCode] 1415. The k-th Lexicographical String of All Happy Strings of Length n (Python)
  • [LeetCode] 2375. Construct Smallest Number From DI String (Python)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    kafka
    리트코드
    C++
    카카오코테
    알고리즘
    프로그래머스
    코테공부
    db
    쿠버네티스
    이분탐색
    네트워크
    코딜리티
    스프링
    자료구조
    Spring
    코딩
    CodingTest
    MySQL
    springboot
    금융용어
    LeetCode
    스프링부트
    Kotlin
    codility
    코테
    java
    자바
    Python
    pythoncodingtest
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[LeetCdoe] 1079. Letter Tile Possibilities (Python)
상단으로

티스토리툴바