Algorithm


Problem Name: Python - DefaultDict Tutorial

Problem Link: https://www.hackerrank.com/challenges/defaultdict-tutorial/problem?isFullScreen=true

In this HackerRank Functions in PYTHON problem solution,

The defaultdict tool is a container in the collections class of Python. It's similar to the usual dictionary (dict) container, but the only difference is that a defaultdict will have a default value if that key has not been set yet. If you didn't use a defaultdict you'd have to check to see if that key exists, and if it doesn't, set it to what you want.
For example:

 

from collections import defaultdict
d = defaultdict(list)
d['python'].append("awesome")
d['something-else'].append("not relevant")
d['python'].append("language")
for i in d.items():
    print i

 

This prints:

 

('python', ['awesome', 'language'])
('something-else', ['not relevant'])

In this challenge, you will be given 2 integers, n and m. There are n words, which might repeat, in word group A. There are m words belonging to word group B. For each m words, check whether the word has appeared in group A or not. Print the indices of each occurrence of m in group A . If it does not appear, print -1.

Example

 

Group A contains 'a', 'b', 'a' Group B contains 'a', 'c'

For the first word in group B, 'a', it appears at positions 1 and 3 in group A. The second word, 'c', does not appear in group A, so print -1.

Expected output:

 

1 3
-1

Input Format

The first line contains integers, n and m separated by a space.

The next n lines contains the words belonging to group A.

The next m lines contains the words belonging to group B.

Constraints

1 <= n <= 10000

1 <= m <= 100

1 <= length of the each word input <= 100

Output Format

Output m lines.
The i**th line should contain the 1-indexed positions of the occurrences of the

word separated by spaces.

Sample Input

STDIN   Function
-----   --------
5 2     group A size n = 5, group B size m = 2
a       group A contains 'a', 'a', 'b', 'a', 'b'
a
b
a
b
a       group B contains 'a', 'b'
b

Sample Output

1 2 4
3 5

Explanation

'a' appeared 3 times in positions 1, 2 and 4.

'b' appeared 2 times in positions 3 and 5.

In the sample problem, if 'c' also appeared in word group B. you would print -1.

 

 

Code Examples

#1 Code Example with Python Programming

Code - Python Programming


from collections import defaultdict

n, m = map(int, (input().split()))

d = defaultdict(list)
for idx in range(1,n+1):
    d[input()].append(idx)
    
for _ in range(m):
    word = input()
    if word in d.keys():
        print(*d[word])
    else:
        print(-1)
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
[Solved] New Companies in SQL solution in Hackerrank
Next
[Solved] Calendar Module in PYTHON solution in Hackerrank