SWiFT
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..
9012번 괄호 / swift
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 스택 구현 관련 문제로 단골 출시되고 있는 괄호 문제다. 먼저 swift는 딱히 스택을 구현하지 않아도 되는데 그 이유는 popLast, appned 메서드가 이미 구현되어 있기 때문에 그냥 배열을 스택처럼 사용하면 된다. [1, 2, 3, 4, 5] 이런 배열이 있다고 쳐보면 이것을 세로로 세우게 되면 그게 바로 스택이다. 위에 메서드 popLast의 이름을 보고 ..
2609 최대공약수와 최소공배수 / swift
https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 문제에서 자세히 보기를 누르면 유클리드 호제법이라는 개념이 나온다. 자세한 내용은 밑에 링크해둔 유튜브를 보면 알 수 있다. import Foundation var num = readLine()!.split(separator: " ").map{ Int($0)!} var max = num.max()! var min = num.min()! // optional로 나오니 강제할당해야한다. var c = max % min while c != 0 { max = min mi..
2164번: 카드 2 / swift
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net import Foundation let N = Int(readLine()!)! var queue = Array(1...N) // 이런 배열 형태는 처음봄. var pointer = 0 // 포인터 만들기. if N == 1 {print(1)} // card수가 1이면 그냥 1출력 else { while true { queue[pointer] = 0 // 맨 앞에 있는 카드 버리기. queue.ap..
4. 집합
Set - 집합 배열과 비슷하지만 많이 다른 자료 구조인 집합을 한번 봐보자. 집합은 중복을 허용하지 않는 자료구조다. 중복을 허용하지 않는 다는 말은 말 그대로 중복값을 반영 하지 않는다는 말과 같다. 실제로 집합의 종류는 다양하지만 이 게시글에선 배열 기반 집합만을 다룰 것이다. 배열 기반 집합과 일반 배열과의 유일한 차이점은 바로 중복값을 허용하지 않는다는 것이다. 다시말하면 집합은 중복을 허용하지 않는다는 간단한 제약을 받는 배열이다. 하지만 이런 제약으로 인해 실제로 앞서 설명한 네 연산중 하나에서 집합의 효율성이 매우 달라진다. 이런 배열 기반 집합으로 읽기, 검색, 삽입, 삭제 연산을 수행해 보자! 읽기📃 먼저 읽기 부분은 배열 읽기와 완전히 똑같다. 컴퓨터가 특정 인덱스에 들어 있는 값을 ..