Swift/Swift Codingtest 7

[Swift] 백준 5618 공약수

문제 링크 5618번: 공약수 첫째 줄에 n이 주어진다. n은 2 또는 3이다. 둘째 줄에는 공약수를 구해야 하는 자연수 n개가 주어진다. 모든 자연수는 108 이하이다. www.acmicpc.net 나의 풀이 import Foundation let n = Int(readLine()!)! let number = readLine()!.split(separator: " ").map{Int($0)!} for i in 1...number.min()! { if n == 2 { if (number[0] % i == 0) && (number[1] % i == 0) { print(i) } } else { if (number[0] % i == 0) && (number[1] % i == 0) && (number[2] % ..

[Swift] 백준 14425번 문자열 집합

문제 링크 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 풀이 import Foundation let NM = readLine()!.components(separatedBy: " ").map{Int($0)!} var set : Set = [] var n = 0 for _ in 1...NM[0] { set.insert(readLine()!) } for _ in 1...NM[1] { if set.contains(readLine()!) { n += 1 } } print(n) A..

[Swift] 백준풀이를 위한 Queue

백준을 풀고있는 어느날... 무수히 많은 시간초과를 겪은뒤 결국 Queue를 사용하기로 했다.. Queue란? Queue를 구글에 쳐보니 대기줄이라는 뜻이 있다. Stack에서는 LIFO(Last In First Out) 즉, 제일 위에서만 데이터가 들어갔다 나갔다 한다고 보면 된다. 하지만 Queue는 FIFO(First In First Out)이다. 위의 그림과 같이 먼저 들어온 것이 먼저 나간다는 뜻이다. Queue에 넣는것을 enQueue, 꺼내는 것을 deQueue라고 한다. Stack에서와 달리 Queue는 앞부분과 뒷부분의 포인터가 필요하다. Dequeue를 아래와 같이 만들어서 쓰는 이유는 Swift에서 배열을 사용할때 시간초과가 발생하기 때문... element를 모두 옮겨주는 과정이 있..

[Swift] 백준 1620번 나는야 포켓몬 마스터 이다솜

문제 링크 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 문제 풀이 나의 풀이 import Foundation let NM = readLine()!.split(separator: " " ).map{Int(String($0))!} var array1 = [String : Int]() var array2 = [Int : String]() for i in 1...NM[0] { let p = readLine()! array1[p] = i array2[i] = p } for _ in 1...

[Swift] 백준 2164 카드2

문제 링크 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 풀이 나의 풀이 import Foundation let N = Int(readLine()!)! var quene = Array(1...N) var n = 0 if N == 1 { print(1) } else { while true { quene[n] = 0 quene.append(quene[n+1]) quene[n+1] = 0 if quene[quene.count-2] == 0 { print(quene.last!) break } n += 2 } ..

[Swift] 백준 1158 요세푸스 문제

문제 링크 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 풀이 나의 풀이 import Foundation let input = readLine()!.split(separator: " ").map{Int($0)!} var n = Array(1...input[0]) var answer : [Int] = [] var k = input[1] - 1 while true { answer.append(n.remove(at: k)) if n.isEmpty {break} k = (k + input[1]-1) % n.count } print("") 풀이 과정 풀이방법 생각하기 우선 요세푸스 순열을 어떻게 간단하..