본문 바로가기

프로그래머스33

[Swift][누적합][LV_3] 파괴되지 않은 건물 요구능력 : 누적합 코드설명 : 카카오테크블로그에 정말 설명이 쉽게 잘되어있습니다. 사실상 똑같은 유형의 문제를 접해보지 않는이상 이 문제는 풀기 어려운것같습니다. 누적합을 공부하고 이 문제를 풀어보면서 너무 많이 돈다고 생각했는데, 알고보니 변화하는 부분을 한번에 다 체크해주고 누적합을 한번에 구하는것이었습니다. 후기 : 개념을 알고있으면 쉬운문제인데 개념을 모른다면 효율성테스트를 절대 통과할 수 없다. func solution(_ board:[[Int]], _ skill:[[Int]]) -> Int { let n = board.count let m = board[0].count var count = 0 var preArr = Array(repeating: Array(repeating: 0, count.. 2022. 2. 24.
[Swift][프로그래머스][LV_2] 위장 요구능력 : Dictionary 코드설명 : 옷 입는 경우의수다. 상의 반팔티, 후드티, 맨투맨 하의 청바지, 슬렉스, 조거팬츠 위와 같이 있으면 옷을 입는 총 경우의 수는 9가지이다. 하지만 이 문제에서는 하나만 입는 경우의 수도 셌으므로 상의 반팔티, 후드티, 맨투맨, 안입음 하의 청바지, 슬렉스, 조거팬츠, 안입음 안입음까지 포함시켜줘야하고, 둘다 안입는 경우는 포함안시키기에 -1을 해줘야한다. 나는 dictionary를 활용해서 dictionary가 비어있지 않으면 1을 더해줬고 비어있으면 2로 초기화했다. 2로 초기화 한 이유는 dict[바지] 이면 현재 for문을 돌고있는 clothes의 원소중 바지하나가 도는것이기 때문에 현재바지 1개 + 안입음 1개 해서 2로 초기화했다. 그리고 결과값을 .. 2022. 2. 22.
[Swift][프로그래머스][LV_2] 양궁대회 요구능력 : 백트래킹 코드설명 : 문제를 잘 읽어야한다. 핵심적인 부분만 찝어보면 1) k점을 어피치가 a발 맞추고 라이언이 b발 맞췃는데 a >= b이면 어피치가 k점을 가져간다. 2) k점을 여러번 맞혀도 k점만 가져감, a = b = 0인 경우 둘 다 못가져간다. 3) 최종점수가 같을 경우 어피치가 우승자 4) 라이언이 어피치를 가장 큰 점수차이로 이기려고 한다. 5) 라이언이 우승 못하는경우 (지거나 비기는경우) -1리턴 6) 가장 큰 점수차이로 우승할 수 있는 방법이 여러가지 일 경우, 가장 낮은 점수를 더 많이 맞힌 경우를 return 문제의 설명을 읽고 입출력 예를 보고 나서 이 문제가 백트래킹 문제라는 것을 파악했다. 6) 조건을 보면 가장 낮은 점수를 더 많이 맞힌 경우를 return하.. 2022. 2. 22.
[Swift][프로그래머스][LV_2] 주차 요금 계산 요구능력 : 문제 이해능력 코드설명 : 무슨 알고리즘을 썻다기 보다는 문제를 이해하고 어떤방식으로 풀어나갈 수 있는지를 보는 문제같다. 내가 생각하는 이 문제에서 핵심 1) 차량번호와 입출차시간을 어떻게 저장할 것인지 2) 시간계산을 분으로 바꿔서 할 줄 아는지 3) 문자열을 다룰줄 아는지 4) 출차시간이 없을때 처리를 어떻게 할 것인지 5) 나머지 올림을 어떻게 처리할 것인지 1)의 경우 차량번호별로 입출차시간을 배열로 받아서 입출차 시간을 저장한다. var carNumTimeDict = [String: [Int]]()//차량번호, 입출차시간 2)과 3)의 경우 문자열을 분리해서 시간을 분으로 환산해서 1)의 딕셔너리에 저장해주었다. for i in records{ let a = i.split(sepa.. 2022. 2. 21.