본문 바로가기

전체 글54

[프로그래머스] Lv2. 뒤에 있는 큰 수 찾기 1. 흠..tbu func solution(_ numbers:[Int]) -> [Int] { var result = [Int](repeating: -1, count: numbers.count) var stack = [Int]() for i in 0.. 2024. 4. 23.
[프로그래머스] Lv.2 롤케이크 자르기 1. 처음에는 0...i 그리고 i+1.. Int { var older: [Int: Int] = [:] var olderSet: Set = [] var younger: [Int: Int] = [:] var youngerSet: Set = [] var answer = 0 for i in 0.. 2024. 4. 23.
[프로그래머스] Lv.2 k진수에서 소수 개수 구하기 1. 처음 풀이 소수 판별을 해야해서 에라토스테네스의 체로 구현했다. 1번, 11번 케이스가 에러가 났다. n의 범위가 1,000,000 이하이고 이를 k진수 형태로 바꾼 수를 범위로 지정해줘야 하는데 n의 범위를 가져다썼기 때문이다. isPrime 배열의 크기가 1,000,001을 훨씬 넘을 것이고, 그렇게 되면 실제 n의 크기와 상관없이 너무 많은 계산을 요구한다. import Foundation func solution(_ n:Int, _ k:Int) -> Int { func isPrime(_ num: Int) -> Bool { var isPrime = Array(repeating: true, count: 1000001) isPrime[1] = false if num > 3 { for i in 2... 2024. 4. 18.
[프로그래머스] Lv.2 피로도 문제 1. 이 문제는 풀이가 잘 떠오르지 않고..뭔가 알고리즘 지식이 있어야 하는구나 느낌이 왔다. 그래서 바로 풀이를 찾아보았다. 깊이 우선 탐색, 즉 DFS 문제라고 한다. DFS는 현재 탐색중인 경로를 끝까지 탐색한 후 다음 경로를 탐색하는 방법이다. 현재 방문한 노드의 인접 노드 중 하나에 바로 방문을 하는 맹목적인 탐색 방식이다. DFS는 재귀함수로 구현하는 방법, 스택을 이용한 방법이 있는데 아래는 재귀함수를 이용한 풀이이다. clamp님의 풀이를 참고했다. visited 배열에서 방문 여부를 저장하고 방문한 노드의 인접 노드에서 재귀함수를 호출하는 식으로 경로를 탐색한다. 아직 익숙하지 않지만 많이 접해보고 익숙해졌으면 좋겠댱 func solution(_ k:Int, _ dungeons:[[Int.. 2024. 4. 16.