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 inputs are given on one line separated by a space character, use split() to get the separate values in the form of a list:
- 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