본문 바로가기

Lv14

[Swift][프로그래머스][LV_1] 신고결과받기 요구능력 : 딕셔너리의 활용 코드설명 : 문제를 풀어봤는데 O(n^2)으로 풀어서 몇개의 테스트케이스에서 시간초과가 나왔다. 신고자와 피신고자의 이름을 맞추다가 시간초과가 난것이다. 이 부분에서 생각을 잘 해야되는데, Dictioary의 특성상 키는 중복되지 않는다. 그리고 신고한사람이 자신이 신고한사람의 목록을 갖고있어봐야 소용이없다. 그래서 피신고자(신고당한사람)가 신고자를 Dictionary에 저장하고 자신을 신고한 사람이 k명이 넘을경우, 자신을 신고한 사람에 1씩 더해줌으로써 경고메일을 표현해준다. 이 문제는 이게 핵심이다. for i in toDict{ if i.value.count >= k { for v in i.value{ receiveDict[v]! += 1 } } 후기 : 커다란 사고가.. 2022. 2. 19.
[Swift][프로그래머스][LV_1] 예산 요구능력 : 오름차순 정렬에 대한 이해 코드설명 : 이 문제에서 핵심 1. 오름차순 정렬 부서별로 필요한 물품을 지원해준다. 배열 d : 부서당 필요한금액 budget : 예산 우리가 구해야하는 것 : 최대 몇 개의 부서에 물품을 지원할 수 있는가 생각해보면 간단하다. 그냥 많은 부서에 지원을 해주고 싶은거면 오름차순해서 작은부서부터 차례대로 지원하다보면 가장 많은 부서에 지원하게된다. 인수로 받은 배열을 따로 오름차순정렬 해주고, 작은것부터 예산범위가 넘어가지않게 더해주면된다. 그렇게하면 최종적으로 최대 부서 개수가 나온다. 후기 : 그냥 기본적인 정렬문제인것같다. 이런게 좀더 꼬이고 꼬이면 DP문제가 될지도.. func solution(_ d:[Int], _ budget:Int) -> Int { va.. 2021. 11. 19.
[Swift][DFS][LV_1][프로그래머스] 소수 만들기 요구능력 : 백트래킹에 대한 이해 코드설명 : 풀이는 살펴보니 여러가지 각양각색이다. 나는 N개의 배열에서 3개를 뽑아내서 백트래킹으로 문제를 풀어냈다. 백준의 N과M을 이해하고온다면 문제를 쉽게 풀 수 있다. 1. 3개를 뽑아내기위한 부분 for i in start.. 2021. 11. 6.
[Swift][문자열][LV_1][프로그래머스] 2주차_상호평가 요구능력 : 문자열의 이해 코드설명 : 1. newScore에 따로 넣어준 이유는 한 행에 최대값과 최소값이 1개 초과로 있는지 확인하기 위함이다. 이렇게 한 행에 한 학생의 점수를 넣어줘야 보기도 편리한것같다. 2. i == j는 자기 자신이 채점했을 때를 의미하고, 자기자신이 채점한 인덱스값이 첫번째 최대값 인덱스 값과 같으면 자기자신이 채점한 값이 최대값이라는 의미이다. 여기서 핵심은 자기자신이 채점한 인덱스가 첫번째 최대값 인덱스와 같고, 자기자신이 채점한 인덱스가 마지막 최대값 인덱스와 같으면 유일한 최대값이라는 것이다. 이해가 안갈수도 있으니, 반대의 경우도 적어보자면 자기자신이 채점한 인덱스가 첫번째 최대값 인덱스와 같고, 자기자신이 채점한 인덱스가 마지막 최대값 인덱스와 다르다면 최대값이 .. 2021. 9. 14.