| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- XSS
- CSRF
- Message
- Kibana
- 자료형
- elk스택
- 프로그래머스
- segment
- 딕셔너리
- Apache Kafka
- Logstash
- Kafka
- Lv3
- 문자열
- 조건문
- topic
- 튜플
- CORS
- BFS
- Elasticsearch
- queue
- sql injection
- programmers
- 숫자게임
- 데이터분석
- rabbitmq
- Python
- partition
- 불리언
- 로그관리
Archives
- Today
- Total
dev-minchur 님의 블로그
[Lv.3] 숫자게임 본문
프로그래머스의 "숫자게임" 문제는 A,B 두팀에서 B의 팀이 최대 승점을 구하는 문제입니다. 각각 두팀은 무작위로 자연수를 하나씩 부여 받고, A팀의 출전 순서는 B팀에게 공개를 합니다.
문제 분석
- 모든 사원이 무작위로 자연수를 하나씩 부여받습니다.
- 각 사원은 딱 한 번씩 경기를 합니다.
- 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개합니다. 그때 숫자가 큰 쪽이 승리하게 되고, 승리한 사원이 속한 팀은 승점을 1점 얻게 됩니다.
- 만약 숫자가 같다면 누구도 승점을 얻지 못합니다.
해결 방법
A,B 두 리스트를 정렬을 하여 B의 값이 큰 경우에만 승점을 포함시키고 인덱스 번호를 증가 시켜 승점을 계산합니다.
1차 문제 풀이 (틀림)
def solution(A, B):
sort_a, sort_b = sorted(A), sorted(B)
answer = 0
index_a = 0
for b in sort_b:
if index_a < len(sort_a) and sort_a[index_a] < b:
answer += 1
index_a += 1
elif index_a < len(sort_a) and sort_a[index_a] == b:
index_a += 1
return answer2차 문제풀이 (정답)
def solution(A, B):
A.sort()
B.sort()
points = 0
j = 0
for a in A:
while j < len(B) and B[j] <= a:
j += 1
if j < len(B):
points += 1
j += 1
return points- A와 B를 정렬합니다.
- 점수와 B팀의 인덱스값 따로 변수로 설정합니다.
- A팀의 각 숫자에 대해 B팀의 적절한 숫자를 찾습니다.
- B팀의 현재 숫자가 A팀의 숫자보다 작거나 같은 경우, 다음 숫자를 찾습니다.
- B팀의 현재 숫자가 A팀의 숫자보다 큰 경우, 점수를 얻습니다.
'Programmers' 카테고리의 다른 글
| [Lv.3] 단어 변환 (0) | 2025.01.10 |
|---|