우당탕탕 개발일지
[그리디] 프로그래머스 level 3 숫자게임 (Python 파이썬) 본문
💡문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡문제 분석 요약
A팀에 n개의 자연수, B팀에 n개의 자연수가 있다.
A팀과 B팀에서 자연수 하나씩 비교해서 B팀의 자연수가 더 크면 1점을 얻는다.
A팀의 자연수 목록을 알고 있을 때, B팀이 가지고 있는 자연수의 순서를 어떻게 배치해야 최대 점수를 얻을 수 있을까.
💡알고리즘 설계
먼저 정렬이 필요하다고 생각했다. 오름차순으로 정렬한 뒤, 앞에서부터 비교한다.
예를 들어 A = [2, 2, 7, 8, 9]이고 B = [3, 4, 6, 8, 10]인 경우 A의 첫번째 원소와 B의 첫번째 원소를 비교하며 시작한다.

💡코드
def solution(A, B):
A.sort()
B.sort()
answer = 0
i, j = 0, 0
while i <= len(A)-1 and j <= len(B)-1:
if A[i] < B[j]:
answer += 1
i += 1
j += 1
else:
j += 1
return answer
💡 오답 풀이
def solution(A, B):
A.sort()
B.sort()
answer = 0
for i in range(len(A)):
if A[i] <= B[i]:
answer += 1
return answer
맨 처음에 제출했던 바보같은 코드.. 같은 위치에서만 비교한다고 잘못 생각했다.
def solution(A, B):
A.sort()
B.sort()
answer = 0
i, j = 0, 0
while i <= len(A)-1 and j <= len(B)-1:
if A[i] <= B[j]:
answer += 1
i += 1
j += 1
else:
j += 1
return answer
부등호를 A[i] <= B[j]로 해서 틀렸다. <=가 아니라 <이어야 한다.
💡 다른 풀이
def solution(A, B):
answer = 0
A.sort()
B.sort()
j = 0
for i in range(len(A)):
if A[j] < B[i]:
answer = answer + 1
j = j+1
return answer
for문과 while문(j += 1)을 같이 썼다.
i는 for문 속에서 1씩 커지고, j는 A[i] < B[j]를 만족하는 경우에 1씩 커진다.
💡 느낀점 or 기억할정보
27분 소요
'알고리즘' 카테고리의 다른 글
프로그래머스 level 2 이진변환 반복하기 (Python 파이썬) (0) | 2025.03.12 |
---|---|
프로그래머스 level 2 JadenCase 문자열 만들기 (Python 파이썬) (0) | 2025.03.12 |
[연습문제] 프로그래머스 level 3 최고의 집합 (Python 파이썬) (0) | 2024.10.17 |
[그리디] 프로그래머스 level 3 단속카메라 (Python 파이썬) ⭐ (0) | 2024.10.15 |
[연습문제] 프로그래머스 level 2 연속 부분 수열 합의 개수 (Python 파이썬) (0) | 2024.10.15 |