알고리즘/프로그래머스
[프로그래머스] 숫자 게임 (Python)
AquaplaneMode
2022. 12. 23. 14:32
문제
문제설명
두 개의 숫자로 이루어진 같은 크기의 배열 A, B가 주어진다. 각 턴마다 A와 B에서 숫자를 하나씩 골라 크기를 비교하며, 숫자의 크기가 큰 팀이 점수를 얻는다. A가 숫자를 고르는 순서가 정해져있을 때, B가 얻을 수 있는 가장 큰 점수는 몇 점인가?
입출력 예
A | B | Result |
---|---|---|
[5,1,3,7] | [2,2,6,8] | 3 |
A는 [5,1,3,7] 순서로 숫자를 내기 때문에, B가 [6,2,2,8] 순서로 내면 3점을 획득할 수 있다.
풀이
기본 개념
- 예제와 같은 배열이 들어왔다고 가정했을 때, 먼저 이를 낮은 순서부터 정렬해준다.
- 배열의 각 요소를 순서대로 비교해준다
- B[i]이 A[i]보다 크다면 A와 B의 index를 1씩 이동시켜준다.
이 경우, B가 1점을 얻었으므로 answer에 1을 더한다. - B[i]이 A[i]보다 작거나 같다면, B의 index만 이동시켜준다.
- B[i]이 A[i]보다 크다면 A와 B의 index를 1씩 이동시켜준다.
소스코드
def solution(A, B):
answer = 0
A.sort()
B.sort()
a = 0
b = 0
while b < len(B):
if A[a] < B[b]:
answer += 1
a += 1
b += 1
else:
b += 1
return answer