문제설명
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
댓글