Swift - 백준 4949번 균형잡힌 세상
·
Algorithm/Baekjoon
이번 문제는 스택을 구현해서 쉽게 해결할 수 있습니다 import Foundationvar line = readLine()!var arr: [Character]while line != "." { arr = .init() for i in line { if i == "(" || i == "[" { arr.append(i) } else if i == ")" { if arr.last == "(" { arr.removeLast() } else { arr.append(i) break } } else if i =..
Swift - 백준 2108번 통계학
·
Algorithm/Baekjoon
산술평균과 중앙값, 범위를 구하는 방법은 쉽지만 최빈값을 구하기 위해서는 조금 고민을 해야합니다.저같은 경우에는 딕셔너리를 사용하여 해결하였습니다.딕셔너리에 값을 넣어 정렬을 한 후 최빈값이 2개라면 그중 후자를 출력할 수 있도록 만들었습니다.import Foundationlet num = Int(readLine()!)!var arr:[Int] = []for _ in 1...num { arr.append(Int(readLine()!)!)}// 1. 산술평균 구하기var sum = 0arr.forEach { sum+=$0 }print(Int(Double(Double(sum)/Double(arr.count)).rounded()))// 2. 중앙값 구하기arr.sort()print(arr[arr.coun..
Swift - 백준 7568번 덩치
·
Algorithm/Baekjoon
덩치문제는 단순 O(n^2) 시간복잡도로도 풀 수 있습니다  단순하게 값들을 튜플 타입인 배열에 추가한 후 다음과 같이 간단하게 풀 수 있습니다.var arr: [(Int, Int, Int)] = []let n = Int(readLine()!)!for _ in 1...n { let line = readLine()!.split(separator: " ").map { Int($0)! } let x = line[0] let y = line[1] arr.append((x, y, 1))}for i in 0..
Swift - 백준 10773번 제로
·
Algorithm/Baekjoon
제로 문제는 스택으로 구현하면 쉽게 풀 수 있습니다  0이 아니면 push 0이면 pop으로 구현할 수 있겠습니다.let num = Int(readLine()!)!var arr: [Int] = []for _ in 1...num { let tmp = Int(readLine()!)! if tmp == 0 { arr.removeLast() } else { arr.append(tmp) }}var sum = 0for i in arr { sum += i}print(sum)
Swift - 백준 2231 분해합
·
Algorithm/Baekjoon
분해합을 구하는 방법은 여러가지일 수 있으며 2가지 방법을 설명하겠습니다   아래 코드는 작은 수부터 올라가며 각 자리수를 더하는 방식으로 구현된 코드입니다. 만약 가장 작은 생성자를 구하면 프로그램을 종료하는 방식입니다.import Foundationlet num = readLine()!for i in 1...Int(num)! { var value: Int = i for j in String(i) { value += Int(String(j))! } if value == Int(num) { print(i) exit(0) }}print(0) 하지만 위에 코드를 아래와 같이 좀 더 짧게 구현할 수도 있습니다.reduce를 사용하여 배열의 모든 ..
Swift - 18110번 sovled.ac
·
Algorithm/Baekjoon
removeFirst와 removeLast는 지우고싶은 개수 만큼 Int 값을 넣어서 지울 수 있습니다  removeFirst와 removeLast는 지우고 싶은 만큼 Int 숫자만큼 넣어서 지울 수 있습니다. rounded 메서드를 사용하면 반올림을 할 수 있습니다. 가장 큰 값과 작은값들을 지우기 위해서는 sort를 사용하여 정렬을 해두는 것이 문제를 해결하는데 쉬워집니다.solved.ac를 풀기 위해서는 0.15% 만큼 앞뒤로 짤라야합니다. 하지만 0.15를 곱해주면 소수점이 나올 수 있기 때문에 그러기 위해서는 rounded를 사용해서 반올림을 해줘야 합니다.import Foundationlet n = Int(readLine()!)!var arr:[Int] = []if n == 0 { pri..
ytw_developer
'Algorithm/Baekjoon' 카테고리의 글 목록 (3 Page)