Hash Tables: Ransom Note | HackerRank

Given two sets of dictionaries, tell if one of them is a subset of the other.

www.hackerrank.com

오랜만에 해커랭크에서 문제를 풀었다. 고새 파이썬 딕셔너리 사용법이 헷갈려서 삽질을 좀 했다..

 

 

삽질했던 부분 

1) 딕셔너리는 키:값 형태인데 키에 문자열을 저장했다.. >> note의 문자열이 magazine 배열에 있을경우 무조건 'Yes' return하는 문제 발생

2) 해커랭크는 기본 입력부분은 제공이 되는데 입력부분을 제대로 확인하지 않아 magazine, note가 하나의 string인줄 알고 공백을 토큰으로 슬라이스 하고있었다...^^ 온라인 코테에서 입력부분 제공되는 경우도 있으니 앞으론 입력부도 제대로 확인하도록 하자 나 자신아,,^^

 

 


 

Solution

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the checkMagazine function below.
def checkMagazine(magazine, note):
    dic={}
    res=True
    
    for i in range(len(magazine)):
        if magazine[i] not in dic:
            dic[magazine[i]]=1
        else:
            dic[magazine[i]]+=1
        
    for i in range(len(note)):
        if note[i] in dic.keys():
                dic[note[i]]-=1
                if dic[note[i]]<0:
                    print('No')
                    res=False
                    break
        else:
            print('No')
            res=False
            break

    if res==True:
        print('Yes')

    
if __name__ == '__main__':
    mn = input().split()

    m = int(mn[0])

    n = int(mn[1])

    magazine = input().rstrip().split()

    note = input().rstrip().split()

    checkMagazine(magazine, note)

 

 

딕셔너리구조를 보여주기 위해 dic/ dic.keys()/ dic.values()를 각각 출력해보았다.

아래처럼 '문자열'(키):값(개수) 가 조회된다

 

 

어쨌든 햅삐한 결말...

 

반응형

+ Recent posts