본문 바로가기

고득점kit11

[Swift][프로그래머스][정렬] H-Index 요구능력 정렬 활용 문제풀이 나는 처음에 citations에 있는 인용수가 h-Index에 들어가는건줄 알고 꽤나 오랜시간 삽질을 했다. 문제를 잘 이해하면 h-Index는 최대 citations의 개수만큼 나온다. 문제에서 논문 n편 중 h번이상 인용된 논문이 h편 이상이고, 나머지가 h번 이하 인용되었다면 h의 최대값이 h-Index라고한다. 바로 예제로 설명을 해보자. [3, 0, 6, 1, 5]가 있다. h가 1인경우를 살펴보자. H-Index가 1이면 논문 5편중 1번이상 인용된 논문이 1편 이상이고, 나머지가 1번 이하 인용되는가? 1번이상 인용된 논문 [3, 6, 1, 5]이 있고 나머지[0]은 1번이하 이므로 인용된다. h가 2인경우를 살펴보자. H-Index가 2이면 논문 5편중 2번이상.. 2022. 4. 13.
[Swift][프로그래머스][정렬] 가장 큰 수 요구능력 정렬과 문자열에 대한 이해 문제풀이 Swift의 경우 sort()함수를 제공한다. sort()함수는 Timsort라는 정렬 알고리즘으로 이루어져있는데, Timsort는 insertionSort와 mergeSort가 합쳐진것이라고 한다. swift에서 알고리즘문제를 풀면서 거의 유일(?)하게 빠르고 좋은함수인것같다. 최악의 경우에도 O(nlogn)의 성능을 뽑아낸다. 이 문제는 이미 문제에 풀이법을 적어놨다. 문자열로 처리해서 리턴해라... 그렇다. 정렬할때도 문자열로 처리해서 더 큰 경우의 수를 맨앞에 놓는 내림차순을 하면 되는것이었다. 쉽게 설명하자면 [6, 10, 2]가 있으면 "\(6)" + "\(10)" 과 "\(10)" + "\(6)" 중 크게나오는 경우로 내림차순을 하라는 말이다. 그.. 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.