큐에 해당하는 문제지만 딱히 큐를 쓰지 않아도 되는 문제. 풀이도 어떻게 보면 큐지만 큐가 아닌것. 이번에도 커서를 이용해 풀이했다. stayList에 현재 커서의 위치보다 작은 값의 유무를 Bool로 받는 배열을 생성하고 그 배열에 false가 없을 시 커서의 위치를 +1을 한다. 배열에 false가 있을 시 출력해야 하는 위치를 변경한다. import Foundation func solution(_ priorities:[Int], _ location:Int) -> Int { var nowLocation = location var myQueue : [Int] = [] var count = 1 for item in priorities { myQueue.append(item) } var cursor = 0..
스택/큐 단계의 첫번째 문제. 자료구조를 배운사람이라면 문제를 읽으면 어떤 것을 써야할지 알것이다. 이번문제에서 쓸 자료구조는 큐이다. 다만 Swift에서 스택이나 큐는 구현되어 있지 않으므로 구조체나 클래스 혹은 배열을 써서 대신해야 한다. 원래는 구조체를 써서 구현하려고 하였으나 오히려 더 복잡해져서 배열로 큐의 원리를 구현하였다. myQueue에는 해당 작업이 완료되는데 걸리는 시간을 넣어둔다. 4 1 5 3 2 cursor는 큐에서 dequeue역할을 한다. 4 1 5 3 2 cursor cursor에 해당하는 작업보다 현재 가리키고 있는 작업시간의 이하이면 count에 1을 더하고 cursor에 1을 더한고 answer에 count를 추가한다. cursor에 해당하는 작업보다 더 크면 거기서 중..
프로그래머스 해쉬단계 마지막 문제. 이 문제에서 까먹기 쉬운것이 장르당 최대 2개까지만 추가 가능하다는 점이다. 이 점도 모르고 꽤 헤멨다. 또 이문제에서 헤멧던 것은 장르를 재생수 순서로 정렬을 하고 장르에 해당하는 인덱스 값을 가져오는것이었는데 처음에는 gernes로만 인덱스 값을 가져오려 했지만, 그 경우 노래 양이 많아지면 시간이 오래 걸려 다른 Dictionary를 만들어서 인덱스 값을 가져오게 하였다. 1. songList에 장르당 총 재생시간을 추가한다. 또 장르의 인덱스 값을 value로 가지는 idByValue를 만든다. 2. songList를 재생량 순으로 정렬. 3. songList에서 장르 순으로 인덱스 값을 가지고 있는 idByValue를 통해 plays를 재생 순으로 정렬해서 s..
Dictionary를 이용하는 문제. 처음에는 경우의 수를 생각해 반복문으로 풀으려고 했으나 그렇게 할 필요가 없이 각 종류별 옷의 수량+1을 곱한 수 마지막에 -1을 빼면 된다. Dictionary는 키값이 옷의 종류이고 value가 종류의 개수다. func solution(_ clothes:[[String]]) -> Int { var count = 1 var clothDic : [String : Int] = [:] for item in clothes { if clothDic.contains(where: { (key: String, value: Int) in return key == item[1] }){ clothDic[item[1]] = clothDic[item[1]]!+1 }else{ clothDi..
프로그래머스 2단계 문제. 생각보다 어렵지는 않다. hash대신에 Dictionary를 사용해 풀었다. phone_book를 정리한 후 Dictionary에 삽입 후 순서대로 비교한다. 단 해당 번호는 Dictionary에서 삭제해야한다. 안그러면 무조건 false가 나온다. import Foundation extension String{ func starstWith(var input : String)->Bool{ if self == input.prefix(self.count) { return true } return false } } func solution(phone_book : [String])->Bool{ var answer = true var list = phone_book.sorted() va..
코딩테스트 고득점Kit부터 풀어보라 추천을 해줘서 이것부터 풀기로 했다. Hash문제에서 가장 첫번째 문제. 마라톤 참가 선수 배열과 완주선수 배열이 주어지고, 완주하지 못한 선수 이름을 반환하는 문제이다. 그저 마라톤 참가 선수 배열과 완주 선수 배열을 비교해 완주배열에 없는 이름을 리턴하면 된다. 여태까지 Hash를 써본적이 거의 없는데 이번 단계를 통해 확실히 알아두어야 할 듯 하다. Java import java.util.HashMap; public class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap hm = new HashMap(); for (St..