상세 컨텐츠

본문 제목

[프로그래머스] 숫자 게임

Algorithm

by 쑤야. 2024. 1. 17. 13:45

본문

https://school.programmers.co.kr/learn/courses/30/lessons/12987?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근


  • b 팀에서 가능한 모든 순서를 만들어서 탐색한다 → 데이터가 10M, 시간초과
    ➡️ 각 원소당 한 번씩만 탐색하여 끝내야 한다
  • A의 순서 데이터를 보존할 필요가 없으며, 현재 차례에 대해서 b가 a 보다 단 1점이라도 크면 된다 → 정렬과 포인터 사용

 

로직


  • a와 b 데이터를 내림차순으로 정렬한다
  • b의 포인터를 0으로 초기화한다
  • a에 대해 반복문으로 수행하면서 현재 a 원소값보다 b 포인터가 가리키고 있는 b 원소값이 큰 경우 승리를 의미하므로 answer와 b 포인터를 1 증가시킨다

코드


1. Swift 풀이


func solution(_ a:[Int], _ b:[Int]) -> Int {

    let a = a.sorted(by: >)
    let b = b.sorted(by: >)
    
    var ap = 0, bp = 0
    var answer = 0
    
    while ap < a.count && bp < b.count {
        if a[ap] < b[bp] {
            answer += 1
            bp += 1
            ap += 1
        }
        else {
            ap += 1
        }
    }
    
    return answer
}

 

2. Python 풀이


def solution(A, B):
    
    a = sorted(A, reverse=True)
    b = sorted(B, reverse=True)
    
    answer = 0
    bp = 0
    for i in a :
        if i < b[bp] :
            answer += 1
            bp += 1
    
    return answer

관련글 더보기