[백준/Silver IV] 요세푸스 문제 - 1158
·
알고리즘/List
분류자료 구조, 구현, 큐제출 일자2024년 5월 22일 00:49:48문제 설명요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)출력예제와 같이 요세푸스 순열을 출력한다...
[백준/실버Ⅳ] 큐 - 10845
·
알고리즘/백준
분류자료 구조, 큐 문제 설명정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다...
[백준/Silver II] 에디터 - 1406
·
알고리즘/List
분류자료 구조, 연결 리스트, 스택 문제 설명한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다.이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 있다.이 편집기가 지원하는 명령어는 다음과 같다.L 커서를 왼쪽으로 한 칸 옮김 (커서가 문장의 맨 앞이면 무시됨)D커서를 오른쪽으로 한 칸 옮김 (커서가 문장의 맨 뒤이면 무시됨)B커서 왼쪽에 있는 문자를 삭제함 (..
[백준/Silver II] 스택 수열 - 1874
·
알고리즘/백준
분류자료 구조, 스택 문제 설명스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다.1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력첫 줄에 n (1 ≤ n ≤ ..
[백준/Silver IV] 괄호 - 9012
·
알고리즘/String
분류자료 구조, 스택, 문자열 제출 일자2024년 5월 13일 16:13:21 문제 설명괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “..
[백준/Bronze I] 단어 뒤집기 - 9093
·
알고리즘/백준
분류구현, 문자열 문제 설명문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다. 문제풀이방법1. T수 만큼 명령 수 입력2. 문장 입력 받은 후 문장안 공백 마다 분리하기3. 분리한 문장들을 뒤집어주기4. 뒤집은 문장을 출력하기
[백준/Silver IV] 스택 - 10828
·
알고리즘/백준
분류자료 구조, 구현, 스택 문제 설명정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고..
[후기] Tuist Night 행사
·
기타/후기
안녕하세요 불망입니다!최근 제가 진행하고 있는 프로젝트에는 모듈화를 직접 경험 해보고 싶어 TCA와 Tuist를 도입하고 있습니다~!Tuist는 일단 처음 접근할 때 너무 생소하고 낯설었지만 공식문서와 리서치를 통해서 결국 설정을 하였고Dev(개발), Release(QA), Main(배포) config setting을 하여 프로젝트를 진행중입니다.그렇게 Tuist에 대해서 배워가고 있을 때 애플 개발자 아카데미 동문 커뮤니티에서 Tuist팀을 초대하여 발표를 한다는 소식을 들었습니다~!저는 아카데미 동문으로 Staff를 지원할 수 있어서 지원하였습니다~! 😄 Tuist Night (Xcode 생산성 높이기 with Tuist Team) | Festa!Festa에서 당신이 찾는 이벤트를 만나보세요.fes..
[Programmers/Swift] LV.1 K번째 수 구하기
·
알고리즘/프로그래머스
문제 설명배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.  예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면  array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.입출력 예 코드 풀이첫번째 방법반복문을 이용하여 시작, 끝, ..
[SwiftUI] TCA(The Composable Architecture)이란?
·
Swift/정리
안녕하세요 불망입니다, 이번에 사이드 프로젝트를 진행하게 되었는데 iOS 부분을 모두 혼자 담당하게 되었습니다 이번 프로젝트에서 TCA + Tuist + Combine을 활용하려고 합니다. 직접 사용해보면서 어떤 장점이 있고 어떤 단점이 있는지 알아보려고 합니다. 오늘은 TCA 패턴에 대해 간단하게 서치해봤습니다. 디자인 패턴 코드가 특정 문제를 해결할 때, 정형화된 하나의 규칙을 제안하는 것 아키텍처 패턴 정리된 코드들을 더 추상화된 비즈니스적 문제 해결 관점으로 정리하는 규칙 TCA 패턴 The Composable Architecture을 활용한 아키텍처 패턴에 대해 설명 SwiftUI는 선언형 UI로 구현하는 환경에서 MVVM 패턴이 자주 사용되었습니다. 그 외 비즈니스 로직, 기업의 개발 환경 및..
[SwiftDataStructure&Algorithms] 기본 데이터 구조(세트, 튜플)
·
Swift/정리
세트 선언 세트는 서로 중복되지 않고 unique, nil이 포함되지 않ㅇ느 non-nil 순위를 정의할 수 없는 무순위 컬렉션이다 세트는 형식상 Hashable 프로토콜에 부합, 스위프트의 모든 기본 타입은 기본적으로 Hashable 프로토콜을 따르도록 설계 열거형의 case값 역시 기본적으로 Hashable 프로토콜을 따른다. 세트에는 여러분이 만든 커스텀 타입도 저장할 수 있는데, 이때 Hashable 프로토콜과 Equatable 프로토콜에 부합해야만 함, Hashable은 Equatable을 상속한 프로토콜 순위가 중요치 않은 배열이라면 해당 데이터를 세트로 저장해도 큰 차이가 없으며, 이때는 해당 요소가 서로 중복되지 않도록 해야함 세트는 배열에 비해 매우 효율적이며, 데이터 접근 속도 역시 세..
[Programmers/Swift] Lv.0 머쓱이보다 키 큰 사람
·
알고리즘/프로그래머스
문제 설명 머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요. 제한사항1 ≤ array의 길이 ≤ 1001 ≤ height ≤ 2001 ≤ array의 원소 ≤ 200입출력 예코드import Foundationfunc solution(_ array:[Int], _ height:Int) -> Int { let count = array.reduce(0) { result, element in print(element) print(result) retu..
[Programmers/Swift] Lv.0 배열 원소의 길이
·
알고리즘/프로그래머스
배열 원소의 길이문제 설명문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.제한사항1 ≤ strlist 원소의 길이 ≤ 100strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.입출력 예 코드import Foundationfunc solution(_ strlist:[String]) -> [Int] { let result = strlist.map { $0.count } return result} Mapmap 함수는 고차 함수로, 컬렉션의 각 요소에 변환 작업을 적용하여 새로운 컬렉션을 생성합니다!간결하고 함수형 프로그래밍 스타일을 지원하며, 루프와 조건문을 줄여 가독성을 ..
[SwiftDataStructure&Algorithms] 기본 데이터 구조(배열, 딕셔너리)
·
Swift/정리
스위프트 표준 라이브러리 활용 표준 라이브러리의 개념은 무척 넓고 다양하다 라이브러리에서 정의한 다양한 프로토콜을 적용할 수 있는 버용 구조체와 열거형을 통해 다양한 기능 제공 Array.append() 함수 예시 해당 배열의 저장 내용을 다른 뱅려과 실시간으로 공유하지 않을 경우 알고리즘의 복잡성 $O(1)$만큼 커짐 함수 실행을 위해 해당 배열을 브릿징한 NSArray로 래핑해야 하며, 그렇지 않을 경우 알고리즘의 효율성은 매우 낮아짐 애플이 구조체를 사용하는 이유 객체지향형 언어를 이용해서 프로그래밍을 했다면, 원하는 타입을 만들기 위해 클래스라는 구조 또는 개념을 사용해 왔을 것 하지만 스위프트 표준 라이브러리에서는 이와 같은 용도로 클래스를 사용하지 않음 스위프트에 정의된 타입 대부분은 구조체 ..
[SwiftDataStructure&Algorithms] 데이터 구조
·
Swift/정리
1강 플레이그라운드 살펴보기 데이터 구조의 중요성 효율성 유지 보수성 확장성 데이터 활용을 위한 체계화 방법 (데이터의 공유,유지,정렬,검색 등) 데이터 구조 + 알고리즘 = 프로그램 데이터 추상화(abstraction)기법 데이터가 지닌 복잡성을 관리하기 위한 기술 데이터 구조를 디자인 추상화를 사용하는 이유 내부의 구현방식을 몰라도 되도록 하기 위함, 개발자는 더욱 쉽게 사용할 수 있다. 문제를 해결하기 위한 패턴 스위프트 REPL 스위프트 컴파일러(Read-Eval-Print-Loop) 즉시 코드를 실행하고 결과를 도출 값을 별도로 할당하지 않았을때 REPL이 직접 $R0라는 변수를 생성해서 값을 할당 기본적인 데이터 구조 배열 & 포인터 인접 데이터 구조: 데이터 메모리 영역중 인접한 부분에 저장..