Swift - 1463번 1로 만들기
·
Algorithm/Baekjoon
중요한 포인트는 if문으로 구성해야 한다는 것입니다. 모든 경우를 계산해야하기 때문에 else if 를 사용하면 오답이 됩니다. import Foundationlet line = Int(readLine()!)!var arr: [Int] = Array(repeating: Int.max-1, count: line+1)arr[line] = 0for n in stride(from: line, to: 1, by: -1) { arr[n-1] = min(arr[n] + 1, arr[n-1]) if n % 2 == 0 && n % 3 == 0 { arr[n/2] = min(min(arr[n/3], arr[n/2]), arr[n]+1) } if n % 2 == 0 { arr..
Swift - 백준 1764번 듣보잡
·
Algorithm/Baekjoon
Dictionary를 사용하는 것보다 되도록이면 간단한 자료형을 사용하는 것이 효율적일 수 있습니다  Dictionary 시간초과 코드Dictionary로 코드를 구현하였다가 시간초과가 발생하였습니다. Dictionary로 Key 값과 Value 값으로 문제를 해결하려다 보니 불필요한 Value값을 지속적으로 contains를 통해 검사해야 했고 이는 효율적이지 못했습니다.import Foundationlet count = readLine()!.split(separator: " ").map { Int($0)! }var arr: [String] = []var arr2: [String] = []for _ in 1...count[0] { arr.append(readLine()!)}for _ in 1.....
Swift - 백준 1620번
·
Algorithm/Baekjoon
딕셔너리는 Key : Value 로 구성되어 있는 자료형으로 dic.key, dic.value 로 값에 접근할 수 있습니다  [String:String] 타입으로 문제를 해결한다면 좀 더 짧게 문제를 해결할 수 있습니다.import Foundationlet count = readLine()!.split(separator: " ").map { Int($0)! }var dictionary: [String:String] = [:]for i in 1...count[0] { let tmp = readLine()! dictionary[String(i)] = tmp dictionary[tmp] = String(i)}for _ in 1...count[1] { let tmp = readLine()!..
Swift - 1260번 DFS와 BFS
·
Algorithm/Baekjoon
DFS는 깊이 우선 탐색을로 재귀함수를 구현해야하고BFS는 큐를 구현하여 해결해야 합니다.import Foundation// 입력을 받아서 배열을 초기화합니다.let line = readLine()!.split(separator: " ").map { Int($0)! }var arr: [[Int]] = Array(repeating: [], count: line[0] + 1)// 간선 정보를 입력받아 배열에 저장합니다.for _ in 1...line[1] { let values = readLine()!.split(separator: " ").map { Int($0)! } arr[values[0]].append(values[1]) arr[values[1]].append(values[0])}fo..
Swift - 백준 1012번 유기농 배추
·
Algorithm/Baekjoon
유기농 배추 문제는 DPS 문제로 해결할 수 있습니다  처음 문제를 해결할 때 가장 헷갈렸던 부분은 2차원 배열을 생성하는 과정이였습니다. 2차원 배열을 만드려면 다음과 같습니다.var array = Array(repeating: Array(repeating: 0, count: columns), count: rows) 2차원 배열을 만든 다음으로는 재귀함수를 이용한 DPS를 통해 문제를 해결할 수 있었습니다.func find(row: Int, column: Int) { array[row][column] = 0 if column-1 > -1 && array[row][column-1] == 1 { find(row: row, column: column-1) } if colum..
Swift - 백준 1003번 피보나치 함수
·
Algorithm/Baekjoon
피보나치 함수 문제는 DP 알고리즘을 사용하면 쉽게 풀 수 있습니다  아래처럼 피보나치 수열에서 0과 1이 각각 몇번 나오는지 미리 계산을 하지 않으면 시간초과가 발생합니다.let num = Int(readLine()!)!var one = 0var zero = 0func fibonacci(n: Int) { if n == 0 { zero += 1 } else if n == 1 { one += 1 } else { fibonacci(n: n-1) fibonacci(n: n-2) }}for _ in 1...num { fibonacci(n: Int(readLine()!)!) print(zero, one) one = 0 z..
ytw_developer
'Algorithm/Baekjoon' 카테고리의 글 목록 (2 Page)