본문 바로가기

반응형

백준

(329)
[BOJ] 백준 11866 요세푸스 문제 0 (Swift) 문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 풀이 이 문제는 Queue를 사용해서 풀 수도 있고, index를 순회하면서 풀 수도 있습니다. Queue를 사용해서 풀이하면, K-1번 만큼 Queue에서 삭제한 요소를 Queue에 삽입시켜주고 K번째가 될 때, Queue에서 삭제연산을 해주면 K번째 요소를 제거할 수 있습니다. 이 동작을 queue가 빌 때 까지 반복해주면 됩니다. index로 접근은 어떻게 할까요? 초기값은 0번째 인덱스를 가리키고 있고, index에 k - 1을 더해준 위치의 요소를 제거해주면 됩니다...
[BOJ] 백준 2164 카드 2 (Swift) 문제 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 Queue 자료구조를 사용하여 풀이할 수 있습니다. 우선 제일 위에 있는 카드를 바닥에 버리는 행위를 Queue의 삭제 연산으로 볼 수 있습니다. 그렇다면 제일 위에 있는 카드를 맨 밑으로 옮기는 행위를 Queue에서 삭제한 요소를 Queue에 삽입하는 것으로 볼 수 있겠죠? Queue의 크기가 1이 될 때까지, 반복문을 실행해주고 Queue의 마지막 요소를 출력해주면 됩니다. 소스코드..
[BOJ] 백준 18258 큐 2 (Swift) 문제 https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 이 문제는 Queue 자료구조를 사용하면 쉽게 풀리는 것이 맞는데.. Swift에서는 입력과 출력이 느려서 다른분들의 도움을 받아서 풀었던 문제입니다. Queue 자료구조에 대해 모르신다면 이 글을 읽어보시면 도움이 되실 것입니다. https://dev-mandos.tistory.com/190 [자료구조] Queue에 대해 알아보고 구현해보기 (Swift) Qu..
[BOJ] 백준 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을 사용해서 풀 수 있는 문제입니다. 1부터 n까지의 수를 Stack에 넣어주고, 뽑으면서 수열을 만들게 됩니다. 예를들어 초기 입력에서 4가 주어졌다면 1, 2, 3, 4 를 Stack에 넣고 뽑아주면 4를 뽑을 수 있습니다. 그 이후로 Stack에 넣을 수 있는 수는 5, 6, 7 ... 일 ..
[BOJ] 백준 4949 균형잡힌 세상 (Swift) 문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 풀이 Stack 자료구조를 사용해서 풀이할 수 있습니다. 먼저 문자열을 하나씩 살펴보면서 "[", "]", "(", ")" 가 아니라면, 살펴보지 않았습니다. 문자열이 괄호이고 Stack의 Top이 "[" 이고, 현재 문자열이 "]"라면 "[]"으로 짝이 맞게 되므로 Stack의 삭제연산을 해주었습니다. 마찬가지도 소괄호도 같은 역할을 해주었습니다. 둘다 아니라면 스택에..
[BOJ] 백준 9012 괄호 (Swift) 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 이 문제는 Stack를 사용하는 Well-Known 문제입니다. Stack이 비어있다면, 어떤 괄호이든지 상관없이 Stack에 삽입해주었습니다. Stack이 비어있지 않고, Stack의 top이 "(" 이고, 현재 문자열이 ")"라면 "()"로 올바른 괄호가 되기 때문에 Stack의 마지막 요소 "("를 삭제 해주었습니다. Stack이 비어있지 않고, 들어..
[BOJ] 백준 10773 제로 (Swift) 문제 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 정수가 "0"일 경우 가장 최신에 쓴 수를 지운다는 것을 보고, Stack 자료구조를 떠올릴 수 있습니다. 총 k번의 입력을 받으면서 정수가 "0"일 경우는 removeLast 메서드를 사용해 가장 최신에 삽입된 요소를 삭제시켜주고, "0"이 아니라면 삽입해줍니다. k번의 입력이 끝난 후, 배열의 요소의 합을 출력해주면 되는 문제입니다. 정수가 "0"일..
[BOJ] 백준 10828 스택 (Swift) 문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 스택 자료구조를 사용해서 풀 수 있는 문제입니다. 스택 자료구조를 모른다면 이 글을 한 번 읽어보시면 도움이 될 것입니다. https://dev-mandos.tistory.com/184 [자료구조] Stack에 대해 알아보고 구현해보기 (Swift) Stack이란? Stack 자료구조는 후입선출(Last In First Out)LIFO 의 특성을 갖는 자료구조 입니다...

반응형