ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [구름] lv2: 환경과 쥐 크기의 상관관계(Python)
    Algorithm PS👩🏻‍💻/구름 2024. 6. 11. 21:19

    1. 문제 링크

    https://level.goorm.io/exam/49101/%ED%99%98%EA%B2%BD%EA%B3%BC-%EC%A5%90-%ED%81%AC%EA%B8%B0%EC%9D%98-%EC%83%81%EA%B4%80%EA%B4%80%EA%B3%84/quiz/1

     

    구름LEVEL

    난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

    level.goorm.io

     

    문제 풀이

    • 집단에 있는 쥐 크기를 기준으로 [x - 2, x + 2] 범위의 숫자들만 대표값이 될 수 있다.
    • 그러므로 대표값이 될 수 있는 숫자들을 a_size, b_size로 모두 넣어 탐색한다.
    • (10 ** 5) * 5(범위값) 이므로 시간 복잡도에도 걸리지 않음.

    코드

    from collections import Counter, deque
    n = int(input())
    arra = list(map(int, input().split()))
    arrb = list(map(int, input().split()))
    
    dica = Counter(arra)
    dicb = Counter(arrb)
    
    xa, xb = 0, 0
    acount = 0
    bcount = 0
    
    a_size = set(list(dica.keys()))
    b_size = set(list(dicb.keys()))
    # a, b에 있는 키 값을 기준으로 [-2, +2]의 키 값을 더해줍니다.
    # size에 없는 키 범위 추가해주는 곳!
    for a in dica.keys():
    	for i in range(5):
    		if i == 3:
    			continue
    		a_size.add(a + i)
    
    for b in dicb.keys():
    	for i in range(5):
    		if i == 3:
    			continue
    		b_size.add(b + i)
    
    a_size = deque(a_size)
    b_size = deque(b_size)
    
    # A의 대표값 찾는 곳
    while a_size:
    	a = a_size.popleft()
    	temp = 0
    	for i in range(5):
    		key = a - 2 + i
    		if key in dica:
    			temp += dica[key]
    
    	if acount < temp:
    		acount = temp
    		xa = a
    	
    # B의 대표값 찾는 곳
    while b_size:
    	b = b_size.popleft()
    	temp = 0
    	for i in range(5):
    		key = b - 2 + i
    		if key in dicb:
    			temp += dicb[key]
    
    	if bcount < temp:
    		bcount = temp
    		xb = b
    		
    print(xa, xb)
    if xa > xb:
    	print("good")
    else:
    	print("bad")
Designed by Tistory.