PS
[swift] 9086 - 문자열
https://www.acmicpc.net/problem/9086 9086번: 문자열 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으 www.acmicpc.net 스위프트는 문자열 다루기가 다른 언어에 비해 좀 불편하다. 하지만 이는 내가 언어를 아직 잘 모르는 것일 수도 있으니 참고 바란다. 문자열 인덱스에 접근할때 막혔던 부분은 endIndex 부분이었다. 이 부분만 적용하면 범위오류가 났기 때문이다. 하지만 이는 내가 endIndex 성질을 잘 몰라서 그런 것이다. endIndex는 마지막 요소를 출력하는 것이 아닌 마지막 요소 다음을 출력하기 때..
11866번 요세푸스 문제 : SWIFT
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net import Foundation let n = readLine()!.split(separator: " ").map{Int(String($0))!} let N = n[0] var K = n[1] var arr = Array(1...N) var killed = [Int]() var cnt = K // 제거 while !arr.isEmpty { if cnt
10866번 덱 / swift
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스위프트에서 덱 자료구조는 없어서 직접 구현해야 한다. 먼저 덱이라는 것은 큐와 비슷한데 큐는 한방향으로만 값을 넣을 수 있다면 덱은 양방향으로 값을 넣을 수 있는 것이다. 큐는 한쪽이 막혀있는 원통형 튜브 덱은 빨대 라고 생각하면 된다. 먼저 아래 코드처럼 함수를 하나하나씩 구현해서 만드는 방법이 있고 아예 배열과 삼항연산자로 짧게 조건문으로도 구현 할 수 있다. import F..
10845번 큐 /swift
https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택과 반대의 개념인 큐다. 코드 목록은 비슷하게 하되 순서에 주의하여 코드를 작성하면 된다. import Foundation let N = Int(readLine()!)! var queue : [Int] = [] for _ in 0.. Int { if queue.isEmpty == true { return -1 }else { return queue.removeFirst() } }..
11050번 이항계수 1 / swift
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이 문제는 범위가 작기 때문에 가장 기본적인 이항계수 구하는 공식으로 구현하면 된다. $ \frac{N!}{K!(N-K)!} $ 구현할때 팩토리얼 개념이 필요하기 때문에 재귀함수로 팩토리얼을 만든 후에 print를 사용해서 구현했다. import Foundation let input = readLine()!.split(separator: " ").map{Int($0)!} print(factorial(input[0]) / (factorial(input[0] - input[1..
10828번 스택 / swift
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택 개념을 이용하면 된다. 스택 개념은 계속 나왔으니 설명은 안하겠고 여기서 얻어갈 수 있는 것은 명령어를 어떻게 처리 하느냐이다. import Foundation let N = Int(readLine()!)! var stack: [Int] = [] for _ in 1...N { let input = readLine()!.split(separator: " ").map{Strin..