Posts Symmetric Difference (Python 3)
Post
Cancel

Symmetric Difference (Python 3)

URL : https://www.hackerrank.com/challenges/symmetric-difference/problem

  • Objective
    • Today, we’re learning about a new data type: sets.
  • Concept
    • If the inputs are given on one line separated by a space character, use split() to get the separate values in the form of a list:
      1
      2
      3
      4
      5
      
      >> a = raw_input()
      5 4 3 2
      >> lis = a.split()
      >> print (lis)
      ['5', '4', '3', '2']
      
  • If the list values are all integer types, use the map() method to convert all the strings to integers.
1
2
3
4
>> newlis = list(map(int, lis))
>> print (newlis)
[5, 4, 3, 2]

  • Sets are an unordered bag of unique values. A single set contains values of any immutable data type.

  • CREATING SETS
    1
    2
    3
    4
    5
    
    >> myset = {1, 2} # Directly assigning values to a set
    >> myset = set()  # Initializing a set
    >> myset = set(['a', 'b']) # Creating a set from a list
    >> myset
    {'a', 'b'}
    
  • MODIFYING SETS
    • Using the add() function:
1
2
3
4
5
6
7
>> myset.add('c')
>> myset
{'a', 'c', 'b'}
>> myset.add('a') # As 'a' already exists in the set, nothing happens
>> myset.add((5, 4))
>> myset
{'a', 'c', 'b', (5, 4)}
  • Using the update() function:
1
2
3
4
5
6
7
8
9
>> myset.update([1, 2, 3, 4]) # update() only works for iterable objects
>> myset
{'a', 1, 'c', 'b', 4, 2, (5, 4), 3}
>> myset.update({1, 7, 8})
>> myset
{'a', 1, 'c', 'b', 4, 7, 8, 2, (5, 4), 3}
>> myset.update({1, 6}, [5, 13])
>> myset
{'a', 1, 'c', 'b', 4, 5, 6, 7, 8, 2, (5, 4), 13, 3}
  • REMOVING ITEMS
    • Both the discard() and remove() functions take a single value as an argument and removes that value from the set. If that value is not present, discard() does nothing, but remove() will raise a KeyError exception.
1
2
3
4
5
6
>> myset.discard(10)
>> myset
{'a', 1, 'c', 'b', 4, 5, 7, 8, 2, 12, (5, 4), 13, 11, 3}
>> myset.remove(13)
>> myset
{'a', 1, 'c', 'b', 4, 5, 7, 8, 2, 12, (5, 4), 11, 3}
  • COMMON SET OPERATIONS Using union(), intersection() and difference() functions.
1
2
3
4
5
6
7
8
>> a = {2, 4, 5, 9}
>> b = {2, 4, 11, 12}
>> a.union(b) # Values which exist in a or b
{2, 4, 5, 9, 11, 12}
>> a.intersection(b) # Values which exist in a and b
{2, 4}
>> a.difference(b) # Values which exist in a but not in b
{9, 5}
  • The union() and intersection() functions are symmetric methods:
1
2
3
4
5
6
7
>> a.union(b) == b.union(a)
True
>> a.intersection(b) == b.intersection(a)
True
>> a.difference(b) == b.difference(a)
False
These other built-in data structures in Python are also useful.
  • Task
    • Given sets of integers, and , print their symmetric difference in ascending order. The term symmetric difference indicates those values that exist in either or but do not exist in both.
  • Input Format
    • The first line of input contains an integer, .
    • The second line contains space-separated integers.
    • The third line contains an integer, .
    • The fourth line contains space-separated integers.
  • Output Format
    • Output the symmetric difference integers in ascending order, one per line.

문제풀이

  • 총 4번의 input중 짝수번째 input의 n과 m
  • n과 m에서 서로 없는 데이터를 찾아 순서대로 출력하면 됨
  • difference와 update, sorted, map을 사용했음
1
2
3
4
5
6
7
8
9
10
_ = input()
a = set(input().split())
_ = input()
b = set(input().split())
c = a.difference(b)
d = b.difference(a)
c.update(d)
k = sorted(list(map(int, c)))
for i in k:
    print(i)
1
2
3
4
5
6
7
8
9
10
 4
 2 4 5 9
 4
 2 4 11 12


5
9
11
12
This post is licensed under CC BY 4.0 by the author.