PS

    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..

    1920번 수 찾기 - swift

    https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 처음에는 N과 M 배열을 각각 만든 후에 M배열의 요소를 N배열에 하나하나 모두 비교해서 참, 거짓을 리턴하려 시도 했었다. 하지만 시간도 오래 걸릴 뿐더러 더 좋은 자료구조 방법이 있었다. 그것은 이분 탐색이다. 이분 탐색이 뭔지는 아래 링크에 올려놨으니 살펴보자. https://zerostar0809.tistory.com/10?category=1..

Buffering ...