Swift - 백준 1920번 수 찾기
·
Algorithm/Baekjoon
수 찾기 문제는 5줄로 해결할 수 있는 간단한 문제입니다 딕셔너리를 사용하여 중복되는 키를 방지하는 동시에 이후 키값만을 사용하여 쉽게 문제를 해결할 수 있었습니다.var arr: [String: Int] = [:]_ = readLine()!readLine()!.split(separator: " ").forEach { arr[String($0)] = 1 }_ = readLine()!readLine()!.split(separator: " ").forEach { print(arr[String($0)] ?? 0) }
Swift - 백준 10814번 나이순 정렬
·
Algorithm/Baekjoon
이번 문제는 정렬을 해야하는 문제로 튜플을 사용하여 쉽게 풀 수 있습니다 튜플 타입의 배열을 사용하여 문제를 해결할 수 있습니다. 튜플의 값을 append를 사용하여 문제를 넣습니다다음으로는 sort 메서드를 사용하여 손쉽게 정렬을 구현할 수 있습니다var arr: [(Int, String)] = []for _ in 1...Int(readLine()!)! { let tmp = readLine()!.split(separator: " ") arr.append((Int(tmp[0])!,String(tmp[1])))}arr.sort { Int($0.0)
Swift - 백준 10828번 스택
·
Algorithm/Baekjoon
스택이란 FILO(First In Last Out)인 특징을 갖고 있는 자료 구조입니다 Queue 큐와 마찬가지로 Swift Foundation 에서는 따로 제공하지 않으므로 직접 다음과 같이 구현할 수 있겠습니다 스택이란?쉽게 생각한다면 스택이란 값을 차곡차곡 쌓는다는 것이라고 생각할 수 있겠습니다. 롤을 해보셨다면 나서스 스택을 가지고 좀 더 쉽게 외울 수 있겠습니다. 나서스 q로 스택을 쌓은 다음 뚝빼기를 때린다면 가장 마지막까지 쌓은 스택의 값이 추가로 들어갑니다. 대략 이렇게 생각하면 조금 편하게 외울 수 있을 것 같습니다.  문제 풀이push: 가장 마지막에 새로운 값을 추가하여 값을 차곡 쌓습니다pop: 가장 마지막에 들어온 값을 없애야 하므로 removeLast 메서드를 사용합니다size:..
Swift - 백준 10845번 큐
·
Algorithm/Baekjoon
큐란 자료구조 중 하나로 Swift에는 존재하지 않으므로 직접 구현해야 합니다 이번에는 6등 달성하였지만 그 이상으로는 더 줄일 수 없었습니다. Queue란Queue는 FIFO 의 특징을 가지고 있는 자료 구조입니다. 즉 가장 먼저 들어왔으면 가장 먼저 나가는 특징입니다.예를 들어 1,2,3,4,5 가 순서대로 들어왔을 때 pop을 한다면 1,2,3,4,5 순서대로 pop 한다는 의미입니다.var arr: [Int] = []for _ in 1...Int(readLine()!)! { let tmp = readLine()!.split(separator: " ") let command = String(tmp[0]) if command == "push" { let value ..
Swift - 백준 10816번 숫자 카드2
·
Algorithm/Baekjoon
알고리즘 분류에 존재하는 방법 외에도 여러 방법으로 문제를 해결할 수도 있습니다  숫자 카드2 문제의 알고리즘 분류는 자료 구조, 정렬, 이분탐색, 해시를 사용한 집합과 맵으로 구성되어 있지만 그 외에 딕셔너리를 사용하여도 간단하게 해결할 수 있습니다. 먼저 딕셔너리를 만들어줍니다이후 1번째 입력값과 3번째 입력값은 필요 없으므로 저장을 하지 않습니다.2번째 입력값을 입력받고 각각 입력받은 숫자의 딕셔너리 value가 존재하지 않는다면 1로 초기화, 존재하면 값을 1씩 증가시킵니다.4번째 입력값을 입력받고 각각 입력받은 숫자의 딕셔너리 value가 존재한다면 해당 value를 출력, 존재하지 않으면 0을 출력합니다.var dic: [Int:Int] = [:]_ = readLine()readLine()!...
Swift - 백준 2798번 블랙잭 (1등 코드)
·
Algorithm/Baekjoon
이번에는 백준 2798번 블랙잭 문제를 해결하는 과정을 알아보겠습니다.  블랙잭 문제는 간단합니다. 주어진 카드들 중에서 3가지 카드를 골라 21을 넘지 않는 (21까지 허용) 범위에서 최대 값이 되는 수를 맞추면 승리하는 게임입니다. 이 문제에서는 카드의 갯수 N과 최댓값에 가깝게 만들어야 하는 M의 값을 첫 번째 입력값으로 주어집니다.다음으로는 N개의 카드의 숫자들을 입력받습니다.다음으로 3중 for문을 사용하여 이전 최댓값과 비교해가면서 정답을 찾으면 됩니다.let line = readLine()!.split(separator: " ").map { Int($0)! }var arr: [Int] = readLine()!.split(separator: " ").map { Int($0)! }var resu..
ytw_developer
'Algorithm/Baekjoon' 카테고리의 글 목록 (5 Page)