본문 바로가기

분류 전체보기

(140)
백준 1715 카드 정렬하기 - Swift https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비..
힙(Heap) 저희가 여러 개의 값을 담기 위해 주로 배열을 사용하잖아요? 그리고 이 배열에서 값들을 넣었다가 뺏다가 하면서 사용하죠. 그럼 Heap은 왜 쓰냐? -> 최댓값 또는 최솟값을 효율적으로 알아내기 위해 사용합니다. 힙(Heap)이란? 힙은 완전 이진트리의 형태로 만들어진 자료구조입니다. 완전 이진트리란 노드를 삽입할 때 왼쪽부터 순차적으로 삽입하는 트리입니다. 예를 들면 위의 완전 이진트리에서 G노드를 삽입시키려면 D 아래에 G노드가 생기는 게 아니라 C아래에 G가 생깁니다. ABCDEF순으로 노드 삽입 그런데 아까 제까 힙은 최댓값 or 최솟값을 효율적으로 구하기 위해 사용하는 자료구조 라고 했는데, 새로운 값을 삽입하면 어떻게 배열 전체를 살펴보지 않고도 최댓값 또는 최솟값을 구할 수 있는 걸까요? 최..
백준 2839 설탕 배달 - Swift https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1..
백준 10828 스택 - Swift https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있..
백준 1874 스택 수열 - Swift https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수..
백준 11899 괄호 끼워넣기 https://www.acmicpc.net/problem/11899 11899번: 괄호 끼워넣기 첫 번째 줄에 S를 올바른 괄호열으로 만들기 위해 앞과 뒤에 붙여야 할 괄호의 최소 개수를 출력합니다. 불가능한 경우는 주어지지 않습니다. www.acmicpc.net 스택 = 괄호, 짝맞추기 코드 func sol() { var bracket = readLine()! var stack = [Character]() for i in bracket { if !stack.isEmpty && stack.last! == "(" && i == ")" { stack.removeLast() continue } stack.append(i) } print(stack.count) } sol()
백준 17413 단어 뒤집기 2 조건에 따라서 분기문이 많아져서 짜면서도 하.. 이게 맞나 싶었는데 일단 맞추고 맞춘사람들 보니까 다들 비슷했습니다. 애초에 문제 자체가 많은 조건에 따라서 분기가 달라지기 때문에 이렇게 될 수 밖에.. 🤣 코드 let input = Array(readLine()!) var sentence = "" var isTagZone = false var answer = "" func sol() { for i in 0..
백준 3986 좋은 단어 문제 : https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 괄호, 짝 맞추기 이런 문제면 큐, 스택 먼저 의심 해보자~~ 근데 문제가 넘 웃김.. 1시간 남았는데 누가 좋은 단어를 세고 있어 해탈한 건가 🤣 코드 func sol() -> Int { let n = Int(readLine()!)! var answer = 0 for i in 0..