[HackerRank][Python3] Journey to the Moon
                2018. 5. 25. 02:52 |
                
                    프로그래밍/HackerRank
                
            
            
            
        Problem :
https://www.hackerrank.com/challenges/journey-to-the-moon/problem
My Solution :
#!/usr/bin/env python3
def journeyToMoon(n, astronaut):
    country = {x: 0 for x in range(n)}
    c_code = 1
    for a1, a2 in astronaut:
        c1, c2 = country[a1], country[a2]
        if c1 == c2 == 0:
            country[a1], country[a2] = c_code, c_code
            c_code += 1
        elif c1 * c2 == 0:
            c = max(c1, c2)
            country[a1], country[a2] = c, c
        elif c1 != c2:
            for a, c in country.items():
                if c == c2:
                    country[a] = c1
            
    country_count = {}
    for c in country.values():
        country_count.setdefault(c, 0)
        country_count[c] += 1
    
    sum, res = 0, 0
    for c in country_count.values():
        res += sum * c
        sum += c
        
    singles = country_count.get(0, 0)
    if singles > 1:
        res += singles*(singles-1)//2
    
    return res
n, p = map(int, input().strip().split())
astronaut = []
for _ in range(p):
    astronaut.append(list(map(int, input().strip().split())))
result = journeyToMoon(n, astronaut)
print(result)
My Solution2:
#!/usr/bin/env python3
def find_set_index(a):
    for i in range(len(a_set_list)):
        if a in a_set_list[i]:
            return i
def journeyToMoon(n, astronaut):
    for a1, a2 in astronaut:
        i1, i2 = find_set_index(a1), find_set_index(a2)
        if i1 != i2:
            a_set_list[i1] = a_set_list[i1].union(a_set_list[i2])
            del a_set_list[i2]
    
    sum, res = 0, 0
    for s in a_set_list:
        res += sum * len(s)
        sum += len(s)
    
    return res
        
n, p = map(int, input().strip().split())
astronaut = []
for _ in range(p):
    astronaut.append(list(map(int, input().strip().split())))
a_set_list = [{x} for x in range(n)]    
result = journeyToMoon(n, astronaut)
print(result)
'프로그래밍 > HackerRank' 카테고리의 다른 글
| [HackerRank][Python3] Construct the Array (0) | 2018.05.30 | 
|---|---|
| [HackerRank][Python3] Minimum Absolute Difference in an Array (0) | 2018.05.29 | 
| [HackerRank][Python3] Big Sorting (0) | 2018.05.29 | 
| [HackerRank][Python3] CamelCase (0) | 2018.05.27 | 
| [HackerRank][Python3] Hackerland Radio Transmitters (0) | 2018.05.23 | 
| [HackerRank][Python3] Sherlock and Cost (0) | 2018.05.21 | 
| [HackerRank][Python3] Maximum Subarray Sum (0) | 2018.05.18 | 
| [HackerRank][Python3] Equal (0) | 2018.05.16 | 
최근에 달린 댓글 최근에 달린 댓글