본문 바로가기

프로그래머스33

[Swift][프로그래머스][정렬] K번째수 요구능력 정렬 문제풀이 간단하게 하기 위해서 i와 j 그리고 k를 배열 인덱스에 맞추기위해서 1씩 빼주었다. 그리고 인덱스 슬라이싱을 통해 i번째...j번째 배열을 추출해서 arr에 넣어주었고 arr을 정렬하고 k번째 있는것을 result배열에 넣어주었다. 후기 간단한 정렬문제이다. 코드 func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { var result = [Int]() for v in 0.. 2022. 4. 13.
[Swift][프로그래머스][Queue] 다리를 지나는 트럭 요구능력 큐 문제풀이 큐를 따로 구현해줘야하니 이글을 먼저 읽고오시는걸 추천드립니다. 트럭이 정해진 순서대로 다리를 건넌다고한다. 다리를 건너는 트럭의 경우에는 뒤에서 들어와서 앞으로 나가니까 큐를 생각하게된다. 예제 1번으로 설명을하면 다리를 건너는 트럭의 큐(contiQueue)는 처음에 다리의 길이가 2이기 때문에 아래와 같이 생성된다. 0초 [0, 0] 1초 [0, 7] 2초 [7, 0] 3초 [0, 4] 4초 [4, 5] 5초 [5, 0] 6초 [0, 6] 여기까지돌고 마지막에 들어온 6은 맨 마지막에 따로 다리의 길이만큼 더해줘서 마지막 트럭이 다리를 건너는 시간을 처리해줬다. 후기 쉬운문제이지만, Swift의 경우에는 큐를 따로 구현해줘야 최적화되기 때문에 난이도가 있는편이다. 코드 stru.. 2022. 4. 12.
[Swift][Programmers][Queue] 프린터 요구능력 큐에대한 이해 문제풀이 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 위의 문제의 조건을 보면 맨앞에서 꺼내서 맨뒤로 넣는다. 전형적인 큐를 이야기 하고있다. 나의 경우 귀찮아서 문제를 지저분하게 풀었지만 튜플을 이용해서 큐를 사용하면 더욱 깔끔하게 문제를 해결 할 수 있다. ABCD를 넣어서 푸는사람도 있겠지만 이 역시 귀찮아서 identy배열에 0부터 queue의 개수만큼 넣어줘서 고유한 숫자로 적용해줬다. priorities가 [2, 1, 3, 2]라면 identy는 ["0", "1", "2", "3"]이렇게.. 2022. 4. 12.
[Swift][Programmers][고득점Kit] 기능개발 요구능력 큐 문제풀이 최악의 경우 시간복잡도가 O(n^2)이지만, 배열길이들이 100개이하라고 해서 아무리 최악의 경우라도 10000번이라 그냥 브루트포스로 풀었다. Swift의 경우 배열에 넣어놓고 removeFirst()를 사용하면 큐처럼 FIFO방식으로 구현이 가능하다. 이 문제는 시간복잡도를 크게 고려하지 않아도 풀 수 있도록 만들어놔서 상관없지만, 나중가면 removeFirst()의 O(n)의 시간복잡도가 아주 골치아파지니 자주 사용은 안하는걸 권해드린다. 나는 queue가 비어있지 않으면 계속 반복하면서 queue에 speed만큼을 더해주었고 그 queue를 맨처음부터 돌리면서 100이넘으면 계속 탐색(count에 1을 더하고 queue와 speed에서 FIFO방식으로 맨앞을 빼주었다.)하고 .. 2022. 4. 12.