본문 바로가기
Python/알고리즘

[COS PRO 1급 #5-5] 몬스터 잡기

by 포푸리 (POPOOLY) 2023. 3. 4.
반응형

문제설명

XX게임에선 캐릭터는 자신과 공격력이 같거나 자신보다 공격력이 작은 몬스터에게 이깁니다. 내가 가진 캐릭터가 최대 몬스터 몇 마리를 이길 수 있는지 구하려 합니다. 단, 한 캐릭터는 한 번만 싸울 수 있습니다.

예를 들어, 세 몬스터의 공격력이 각각 [1, 4, 3]이고, 내가 가진 두 캐릭터의 공격력이 각각 [1, 3]이라면 첫 번째 캐릭터는 첫 번째 몬스터와, 두 번째 캐릭터는 세 번째 몬스터와 싸워서 이길 수 있습니다. 따라서 이길 수 있는 몬스터 수는 최대 2마리입니다. 

모든 몬스터의 공격력을 담은 리스트 enemies, 내가 가진 모든 캐릭터의 공격력을 담은 리스트 armies가 매개변수로 주어질 때, 내 캐릭터로는 최대 몬스터 몇 마리를 이길 수 있는지 return 하도록 solution 함수를 작성해주세요.

매개변수 설명

모든 몬스터의 공격력을 담은 리스트 enemies, 내가 가진 모든 캐릭터의 공격력을 담은 리스트 armies가 solution 함수의 매개변수로 주어집니다.

* 몬스터 수는 1마리 이상, 500마리 이하입니다.
* 각 몬스터의 공격력은 1 이상 100 이하입니다.
* 내가 가진 캐릭터 수는 1개 이상 500개 이하입니다.
* 각 캐릭터의 공격력은 1 이상 100 이하입니다.

return 값 설명

내가 가진 캐릭터로는 최대 몬스터 몇 마리를 이길 수 있는지 return 해주세요.

예시

| enemies   | armies    | return |
|-----------|--------------|--------|
| [1, 4, 3] | [1, 3]    | 2     |
| [1, 1, 1] | [1, 2, 3, 4] | 3      |

예시 설명

입출력 예 #1
문제에 나온 예와 같습니다.

입출력 예 #2
캐릭터를 어떻게 보내도 모든 몬스터를 이길 수 있습니다.

문제 코드

def solution(enemies, armies):
    #여기에 코드를 작성해주세요.
    answer = 0
    return answer

풀이

def solution(enemies, armies):
	answer = 0
    
	# eneies, armies 오름차순 정렬
	enemies.sort()
	armies.sort()
	army = 0
	enemy = 0
    
	# armies와 enemies의 원소를 비교해 armies가 더 크면 answer += 1
	while army < len(armies)-1 or enemy < len(enemies)-1:
		if armies[army] >= enemies[enemy]:
			answer += 1
			army += 1
			enemy += 1
		else:
			army += 1
	return answer

댓글