programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

이번 문제는 배열이 주어지고 정렬하는 문제로 보았다.

 

실 답을 구하려면 굳이 id를 정하고 정렬할 필요는 없어 보이지만 

실제 프린터라고 생각해서 하나의 작업에 대해 id를 각각 추가하여 작성해봤다.

 

정렬 순서는 문제에서 제시해준 3단계를 그대로 따라하면 간단히 된다.

 

난 총 세부분으로 소스를 나눠 작성했다

 

첫번째 - 주어진 priorities에 각각 id를 지정

두번째 - priorities를 정렬(

문제에서 주어짐, 첫번째 목록의 우선순위가 대기중인 작업의 우선순위보다 낮다면 무조건 대기순위 뒤로 이동 

대기중인 작업중 우선 순위가 더 큰게 없다면 대기순위에서 제거)

 

세번째 - 찾으려는 타깃이 언제 완료되는가 리턴 

 

 

  struct Work {
    let id:Character
    let priority:Int
  }
  
  func solution(_ priorities:[Int], _ location:Int) -> Int {
    var works = [Work]()
    var endArray = [Work]()
    var lastId:Character = "a"
    for priority in priorities {
      let work = Work(id: lastId, priority: priority)
      lastId = Character(Unicode.Scalar((lastId.unicodeScalars.first!.value) + 1)!)
      works.append(work)
    }

    guard location < works.count else { return -1 }
    let findTarget = works[location]
    
    while works.count > 0 {
      let target = works[0]
      var notFind = true
      for i in 1 ..< works.count {
        // 뒷 대기열에 큰게 있다면 notFind = false
      }
      if notFind {
      // 대기열에서 제거 endArray에 추가
      }
    }

    for i in 0 ..< endArray.count {
    // 찾으려는 id와 같은것의 i값 리턴
    }
    
    return -1
  }

 

 

전체 소스는 아래 깃허브 페이지에 있다.

github.com/wiwi-git/Programmers-learn/blob/master/swift/Practice/Practice/Printer.swift

 

wiwi-git/Programmers-learn

Contribute to wiwi-git/Programmers-learn development by creating an account on GitHub.

github.com

 

+ Recent posts