정구리의 우주정복

[TOP CODER] 즐거운 파티 (전체 탐색) 본문

ALGORITHM/SOLVE

[TOP CODER] 즐거운 파티 (전체 탐색)

Jungry_ 2020. 5. 28. 19:53
반응형

문제 :

화이트씨는 다재다능한 사람입니다 . 그래서 그에겐 친구가 많습니다 . 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다 . 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다 . 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구들을 초대해야할지가 큰 문제입니다 . 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미있는 화제가 있을때 파티를 즐긴다는 것을 알았습니다 . 

 

문자열 배열 first 와  second 가 주어집니다 . 화이트씨의 i번째 친구가 흥미있는 화제는 first[i] 와 second[i] 입니다. 즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇명인지 리턴하세요.

 

입출력 값 예 :

first = {fishing,gardening,swimming,fishing}

second = {hunting,fishing,fishing,biting}

 

Return : 4

 

풀이 :

전체탐색을 이용해서 i 번째와 일치하는 친구가 first or second 에 있으면 count 값을 +1 해주고   최종 count 값을 append 해준다

 

first= list(map(str,input().split(',')))
second = list(map(str,input().split(',')))
count = []
for i in range(len(first)):
    count_first = 0
    count_second = 0
    for j in range(len(first)):
        if first[i] == first[j] or first[i] == second[j]:
            count_first += 1
        if second[i] == first[j] or second[i] == second[j]:
            count_second += 1
    count.append(count_first)
    count.append(count_second)

print(max(count))

 

응용 풀이 :

딕셔너리를 사용해서 풀어준다 (for 문을 한번만 사용하면 되기 때문에 좀 더 효율적임)

 

first= list(map(str,input().split(',')))
second = list(map(str,input().split(',')))
count = {}

for i in range(len(first)):
    count[first[i]] = 0
    count[second[i]] = 0

for j in range(len(first)):
    count[first[j]] +=1
    count[second[j]] +=1

print(max(count.values()))
반응형
Comments