본문 바로가기

Algorithm236

[Swift][프로그래머스][그리디] 체육복 요구능력 그리디 문제풀이 이 문제는 전체 학생수가 30명이하라고 했기 때문에 뭐 어떻게 풀어도 풀기만하면 시간초과는 안나온다고 생각한다. 그리고 여분을 가지고 있는 학생과 도난당한 학생들이 있는데, 여분을 가지고있는 학생들이 자기 앞뒤번호로 나눠준다는 문제이다. 이 문제에서 설명이 필요한 부분은 딱 2개인것같다.(내가 놓친 예외) 1) 우리는 입력받을 때 무조건적으로 오름차순으로 준다는 말이 없었다. 하지만 문제를 풀 때 오름차순으로 받아야 편하게 풀린다.. 그리고 보여지는 테케에서는 오름차순으로만 주기때문에 사람들이 놓치기 쉬운 예외인것같다. 그래서 lostTemp와 reserved는 각각 lost와 reserve를 정렬한것이다. 참고) (테케 18, 20번)통과 2) 문제의 조건 중 "도난당한학생은 .. 2022. 4. 20.
[Swift][프로그래머스][해시] 베스트앨범 요구능력 딕셔너리의 활용 및 정렬 문제풀이 아래는 문제의 조건이다. 1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 1번을 처리하기 위해서 dict를 생성하고 ["classic": 1450]과 같이 저장하였다. 그리고 정렬해서 rankDict에 ["classic": 1]과 같이 저장하였다. 다음으로 2번을 처리하기 위해서 uniqueDict를 생성하고 [0 : ("classic", 500)]과 같이 저장하였다. 그리고 rankDict를 활용해서 장르별로 정렬을 해주었다. 이렇게 장르별로 정렬된 것은 sortedUniqueDict에 저장해주었고, sor.. 2022. 4. 19.
[Swift][프로그래머스][완전 탐색] 카펫 요구능력 수학 문제풀이 우리가 이 문제에서 구해야되는건 width와 height이다. width와 height 의 곱이 결국 면적이다. 모든 카펫의 면적은 yellow와 brown의 합이다. 그렇다면, width * height = yellow + brown 이라는 것이다. 우리는 width와 height를 구해야하는데 면적을 가지고 있다. 그렇다면 완전탐색으로 면적을 한번 구해보자. width가 전체면적값을 다 차지하지는 않으니까 1부터 S - 1까지만 탐색을 해보는 것이다. 여기서 우리가 탐색할 필요가 없는 부분이 있다. 바로 면적이 width로 나누어 떨어지지 않는 부분이다. 면적 = width * height인데 나누어 떨어지지 않으면 볼 필요도 없다. 그렇다면 width가 들어왔으니 높이를 구해.. 2022. 4. 18.
[Swift][프로그래머스][완전 탐색] 소수 찾기 요구능력 에라토스테네스의 체, 순열 문제풀이 문제에서 7자리까지 나올 수 있다고 언급했고, 0 ~ 9까지의 숫자가 있을 수 있으니 최악의 경우 9999999가 나올 수 있다. 따라서 소수판별 알고리즘인 에라토스테네스의 체를 이용해서 9999999까지의 소수를 구했다. 그리고 이 문제는 전형적인 순열관련 문제인데, 찢어진 수를 붙이기위해서 String형태로 joined()를 해줬다. 그리고 Int()!로 강제캐스팅해주면서 011과 같은 예외를 처리해준다. 그리고 소수이면 setNum에 저장을 해주는데, Set을 사용한 이유는 중복된 수까지 세지 않기 위해서이다. 후기 무난한 순열문제인데 에라토스테네스를 그냥 크게잡아놔서 시간이 오래걸린다 코드 func solution(_ numbers:String) -> .. 2022. 4. 18.