Printer

Sett·2021년 7월 7일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/42587?language=swift

문제 접근

  1. 맨 처음 배열 두개를 선언
  2. 한쪽은 우선순위(priorities), 한쪽은 내 위치(location)로 두고
  3. 한쪽에 변화가 다른 위치에도 변화를 주어 인덱스를 탐색하려 했으나,
  4. 문제는 중복 값이 있을 경우, 이게 내 값인지 중복된 값인지 모른다는 것이었다.

개선된 접근

  1. Dictionary로 내가 지정한 값이 맞는 지 표시하려고 했음.
  2. 잘 풀다가 Dictionary는 값을 큐 처럼 넣고 빼는 함수를 못 찾음.
  3. 튜플로 개선
  4. 튜플이 짱이야. 🌟

소스 코드

func solution(_ priorities:[Int], _ location:Int) -> Int {
    var answer: Int = 0
    var q: [(Int,Int)] = []
    var pq = priorities.sorted(by: >)
    for i in 0..<priorities.count {
        q.append((i,priorities[i]))
    }
    while (!q.isEmpty) {
        let i: Int = q.first!.0
        let p: Int = q.first!.1
        q.remove(at: 0)
        
        if (p == pq.first) {
            pq.remove(at: 0)
            answer += 1
            
            if (i == location) {
                break
            }
        }
        else {
            q.append((i,p))
        }
    }
    
    return answer
}
profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2021년 7월 7일

우선순위와 배열의 index를 함께 mapping 하려했다가 포기했는데 set이 있었군요ㅎㅎ!
별 차이는 없을 것 같은데 if( i == location) { break } 대신 return answer 는 어떨까요? 무슨 코멘트라도 해야할 것 같아서 ^^;

1개의 답글

관련 채용 정보