본문 바로가기

Algorithm123

[Swift][프로그래머스][이분탐색] 입국심사 요구능력 이분탐색 문제풀이 시간을 이용하여 이분탐색을 진행한다. 맨처음은 0분으로 설정했고, 가장 오래걸리는 시간은 times배열에서 심사하는데 가장오래걸리는사람 * n을 해주면된다. left와 right를 비교해가며 이분탐색을 진행한다. 후기 이분탐색은 처음써보는데 쓸만한 알고리즘인거같다. 코드 import Foundation func solution(_ n:Int, _ times:[Int]) -> Int{ let time = times.sorted() var left = 0 var right = n * time.last! while left = n{ right = mid - 1 }else if people < n{ left = mid + 1 } } return left } 2022. 5. 3.
[Swift][프로그래머스][그리디] 체육복 요구능력 그리디 문제풀이 이 문제는 전체 학생수가 30명이하라고 했기 때문에 뭐 어떻게 풀어도 풀기만하면 시간초과는 안나온다고 생각한다. 그리고 여분을 가지고 있는 학생과 도난당한 학생들이 있는데, 여분을 가지고있는 학생들이 자기 앞뒤번호로 나눠준다는 문제이다. 이 문제에서 설명이 필요한 부분은 딱 2개인것같다.(내가 놓친 예외) 1) 우리는 입력받을 때 무조건적으로 오름차순으로 준다는 말이 없었다. 하지만 문제를 풀 때 오름차순으로 받아야 편하게 풀린다.. 그리고 보여지는 테케에서는 오름차순으로만 주기때문에 사람들이 놓치기 쉬운 예외인것같다. 그래서 lostTemp와 reserved는 각각 lost와 reserve를 정렬한것이다. 참고) (테케 18, 20번)통과 2) 문제의 조건 중 "도난당한학생은 .. 2022. 4. 20.
[Swift][프로그래머스][완전 탐색] 소수 찾기 요구능력 에라토스테네스의 체, 순열 문제풀이 문제에서 7자리까지 나올 수 있다고 언급했고, 0 ~ 9까지의 숫자가 있을 수 있으니 최악의 경우 9999999가 나올 수 있다. 따라서 소수판별 알고리즘인 에라토스테네스의 체를 이용해서 9999999까지의 소수를 구했다. 그리고 이 문제는 전형적인 순열관련 문제인데, 찢어진 수를 붙이기위해서 String형태로 joined()를 해줬다. 그리고 Int()!로 강제캐스팅해주면서 011과 같은 예외를 처리해준다. 그리고 소수이면 setNum에 저장을 해주는데, Set을 사용한 이유는 중복된 수까지 세지 않기 위해서이다. 후기 무난한 순열문제인데 에라토스테네스를 그냥 크게잡아놔서 시간이 오래걸린다 코드 func solution(_ numbers:String) -> .. 2022. 4. 18.
[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.