첫 풀이
1. A를 앞으로 한칸씩 땡기기
2. A와 B를 전체 비교
3. 이중 for문으로 len(A)만큼 돌리는거라 시간이 괜찮을까 걱정했다
def solution(A, B):
answer = -1
A.sort(reverse=True)
B.sort(reverse=True)
m=-123
for i in range(len(A)):
cnt=0
for j in range(len(A)):
if A[j]<B[j]:
cnt+=1
if cnt>m:
m=cnt
if cnt<m:
break
tmp=A.pop(0)
A.append(tmp)
return m
효율성 테스트에서 실패했다
더 나은 답안
1. 생각보다 간단한 문제였다 a가 고정이지만 사실 b를 맞쳐서 내면 되기때문에 순서를 바꿀 수 있다
2. a와b를 정렬하고 앞에서부터 비교한다
3. b가 a보다 크다면 1점 올리고 b 인덱스를 더해 다음 원소와 비교한다
4. b가 작다면 버리는 카드다
def solution(A, B):
answer = 0
A.sort(reverse=True)
B.sort(reverse=True)
m=-123
idx=0
for i in range(len(A)):
if A[i]>=B[idx]:
continue
else:
answer+=1
B.pop(0)
return answer
배운 점
1. 범위가 큰데 이중 for문에 리스트 전체를 탐색하면 연산시간이 오바할 수가 있다.
2. 간단하게 바꿀 수 있는 부분을 찾는다
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 문제풀이 - 예상 대진표 (0) | 2023.05.09 |
---|---|
[프로그래머스] 파이선 문제풀이 - 기지국 설치 (0) | 2023.05.08 |
[프로그래머스] 파이썬 문제풀이 - 다리를 지나는 트럭 (0) | 2023.05.04 |
[프로그래머스] 파이썬 문제풀이 - 숫자 변환하기 (0) | 2023.05.04 |
[프로그래머스] SQL 문제풀이 - 오랜 기간 보호한 동물(1) (0) | 2023.04.28 |
댓글