BOJ/Swift 8

백준 3273번 두 수의 합 Swift

https://www.acmicpc.net/problem/3273 내 코드let n = Int(readLine()!)!let arr = readLine()!.split(separator: " ").map { Int($0)! }.sorted()let target = Int(readLine()!)!var left = 0var right = n - 1var result = 0while left  Review이중 for문을 통해 모든 경우의 수를 다 계산을 하면 시간초과가 뜨기 때문에, 투포인터를 활용하여 풀었습니다. 예시로 아래와 같은 배열 [1, 3, 5, 10, 12] 이 있다고 하겠습니다.left가 가리키는 배열의 수와 right가 가리키는 배열의 수의 합이 target 과 같다면 결과에 1을 더해줍니다..

BOJ/Swift 2024.11.14

[프로그래머스] 가장 먼 노드 Swift

https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내 코드import Foundationfunc solution(_ n: Int, _ edge: [[Int]]) -> Int { var visited: [Bool] = Array(repeating: false, count: n+1) var graph: [[Int]] = Array(repeating: [], count: n+1) var result: [Int] = Array(repeating: 0, count: n+1) ..

BOJ/Swift 2024.11.13

백준 3020번 개똥벌레 Swift

https://www.acmicpc.net/problem/3020  내 코드let input = readLine()!.split(separator: " ").map { Int($0)! }let N = input[0]let H = input[1]var list = Array(repeating: 0, count: H)// O(N)for i in 0.. Review이 문제는, N의 크기가 200,000 이므로 시간 복잡도가 O(N^2)이 넘어가면 시간 초과가 뜨게 됩니다.Imos method 이라는 유명한 문제인데, 누적합을 활용하여 풀었습니다.이모스법을 요약하면1. 벽의 시작(아래)과 끝(위)에 1과 -1을 써줍니다. 2. 해당 숫자들을 높이별로 다 더해줍니다. [3. -1, 1, -1, 1, -1, 1] ..

BOJ/Swift 2024.11.08

백준 17939번 Gazzzua 파이썬

https://www.acmicpc.net/problem/17939 내 코드N = int(input())coin = list(map(int, input().split()))[::-1]standard = coin[0]result = 0for i in range(1, len(coin)): if standard > coin[i]: result += standard - coin[i] else: standard = coin[i] print(result) Review문제에 나와있는 핵심 조건은 아래와 같습니다.1. 구매는 매 분마다 1개씩 가능2. 판매는 제한 없음문제에 나와 있는 예제 1 5 10 2 4 3으로 설명하겠습니다.언제 사고 언제 파는지에 대한 기준을 정..

BOJ/Swift 2024.06.03

백준 2579번 계단 오르기 Swift

https://www.acmicpc.net/problem/2579내 코드let N = Int(readLine()!)!var S: [Int] = []var dp: [Int] = Array(repeating: 0, count: N)for _ in 0..Review처음에는 아래 사진 처럼, 가지치기 형식으로 풀었습니다.하지만 가지치기 단계에서 같은 연산이 반복되는 중복되는 과정도 있었기 때문에다이나믹 프로그래밍(DP) 방식으로 생각을 돌렸습니다.문제의 조건은 아래와 같습니다.1. 계단을 오를 때, 한 번에 1 계단, 2 계단 씩 오를 수 있습니다.2. 한계단씩 3번 연속으로 오를 수 없습니다.예를 들어, 한 번에 계단 1, 2, 3을 모두 밟으면 안 됩니다.점화식 마지막 계단을 밟기 전의 상황을 생각해 본다면..

BOJ/Swift 2024.05.13

백준 2609번 최대공약수와 최소공배수 Swift

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 내 코드 // 유클리드 호제법 func gcd(_ a: Int, _ b: Int) -> Int { var a = a var b = b while b != 0 { let temp = b b = a % b a = temp } return a } func lcm(_ a: Int, _ b: Int, gcd: Int) -> Int { return (a * b / gcd) } let input = readLine()!.split(separator: " ").map { Int..

BOJ/Swift 2024.04.18

백준 1000번 A+B swift

https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 내 코드 let input = readLine()!.split(separator: " ") print(Int(input[0])! + Int(input[1])!) Review readline() 은 리턴값이 옵셔널 이에요! 따라서 Swift에서 input을 받을 때 옵셔널 언래핑 과정을 생각해 줘야 해요. 이상으로 swift 언어의 가장 기본적인 문제를 풀어 보았습니다. 관련 내용은 옵셔널 관련 글에서도 찾아볼 수 있어요! https://thingjin.tistory.com/entry/Swift-Optional-%EA..

BOJ/Swift 2023.06.22
반응형
목차(index)