알고리즘(2)
-
백준 1629 문제 시간초 1등 기념 포스팅
let input = readLine()!.split(separator: " ").compactMap { Int($0) }let a = input[0], b = input[1], c = input[2]func solution(_ a: Int, _ b: Int, _ c: Int) -> Int { if b == 1 { return a } if !b.isMultiple(of: 2) { return a * solution(a, b - 1, c) } let half = solution(a, b / 2, c) % c return half * half % c}print(solution(a, b, c))다른 문제와 다르게 연산 시간을 줄여준 비결은 isMultiple(of: )에 있었다.이런 소소..
2024.08.31 -
[백준] 7576 토마토 🍅
7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 블로그 글을 쓴 이유는 다른 그래프 문제에서는 문제가 되지 않던 시간 초과가 발생해서이다. 기존에는 swift Array를 큐로 사용하여 pop할 때 removeFirst()를 사용해도 시간 초과가 되지 않았다. 해결법은 큐를 팝하면서 순회하지 않고, head 변수를 두어서 queue[head]의 값을 가져오도록 해야 한다. 문제 해설 1. 그래프를 이용한 최단 거리를 구하는 문제이니 BFS로 접근 2. 상자에서 토마토의 위치를 기록 3. BFS..
2022.04.14