[HackerRank] Contacts (Python)

2025. 1. 18. 23:41·코딩 테스트
728x90

1.문제

https://www.hackerrank.com/challenges/contacts/problem

 

2.풀이

처음에 정직하게 구현으로 풀다가 time limit exceeded 나서 실패..

단순해 보이지만 Time Complexity를 신경써서 풀어야하는 문제이다.

def contacts(queries):
    answer = []
    arr = []

    for i in range(len(queries)):
        command = queries[i][0]
        if command == 'add':
            data = queries[i][1]
            arr.append(data)
        else:
            target = queries[i][1]
            cnt = 0
            for word in arr:
                if (word[:len(target)] == target):
                    cnt+=1
            answer.append(cnt)
    return answer

 

 

3.코드

defaultdict 를 사용한 풀이.

모든 prefix 경우의 수를 생성하여 카운트를 미리 저장한다.

dict와 defaultdict 의 차이는

- dict[key] => value 가 존재하지 않으면 에러 반환

- defaultdict[key] => value 가 존재하지 않으면 default 값 반환.

예를들어 defaultdict(int) 라고 하면 value 가 존재하지 않을 경우 0을 반환한다.

 

from collections import defaultdict

def contacts(queries):
    prefix_count = defaultdict(int)
    answer = []

    for command, value in queries:
        if command == "add":
            # 문자열의 모든 접두사를 생성하며 카운트 증가
            for i in range(1, len(value) + 1):
                prefix_count[value[:i]] += 1
        elif command == "find":
            # 접두사가 있는 경우 카운트 반환
            answer.append(prefix_count[value])

    return answer

 

 

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

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

[LeetCode] 205. Isomorphic String (Python)  (0) 2025.01.28
[LeetCode] 202. Happy Number (Python)  (0) 2025.01.27
[HackerRank] Find the Running Median (Python)  (0) 2025.01.18
[HackerRank] Tree: Level Order Traversal  (0) 2025.01.18
[HackerRank] Tree: Height of a Binary Tree (Python)  (0) 2025.01.18
'코딩 테스트' 카테고리의 다른 글
  • [LeetCode] 205. Isomorphic String (Python)
  • [LeetCode] 202. Happy Number (Python)
  • [HackerRank] Find the Running Median (Python)
  • [HackerRank] Tree: Level Order Traversal
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[HackerRank] Contacts (Python)
상단으로

티스토리툴바