분류 전체보기

· → Solver
프로젝트를 시작하기에 앞서 여러가지 세팅할 것들을 세팅했다. 앱 이름 우선 프로젝트를 시작하려면 프로젝트의 이름을 설정해야 파일도 만들고, Github Repository도 만들수 있어서 앱 이름부터 결정하게 되었다. Solved.ac 와의 연관성과 뜻을 고려하여 Solver 라는 간단한 앱 이름을 우선 설정했다. 앱 디자인 및 기획 앱 디자인의 경우 최대한 기본 컴포넌트를 활용하여 만들것이고, 어떠한 정보를 표시할지, 어떻게 화면에 표시할지는 개인프로젝트의 장점(?)을 살려 프로젝트 생성후 빠르게 기획할 예정이라 우선 프로젝트부터 생성하였다. 커밋 룰 레포지토리는 public으로 할 예정이고, 커밋은 gitmoji를 활용하여 영어로 작성하기로 했다. gitmoji의 경우 아래의 룰을 따르기로 했다. g..
· → Problems
문제 소개포도주 잔을 2잔 연속해서 마실수있고, 주어진 n개의 포도주의 양중에 최대로 마실수 있는 포도주의 양을 출력하는 문제이다. 문제 풀이와인을 마실경우를 O라고 생각하고 마시지 않을 경우를 X라고 생각하면 앞을 고려하지 않는다면 다음과 같은 경우가 최대가 될 것이다.하지만 여기서 문제가 있다. 1번 2번 케이스일 경우 앞에서 어떠한 케이스인지 모르기 때문에 함부로 2번 연속해서 마시거나 1번 마실수가 없다. 이미 앞에서 마셨을수도 있기 때문이다. 그렇다면 1번 2번 케이스의 X의 앞을 살펴보면 가장 최선의 선택을 했을 경우라는 것을 볼 수 있다. 그렇다면 이렇게 생각해보면 어떨까? 내가 생각하기에 다이나믹 프로그래밍은 "내가 계산한 값에 대한 믿음" 이다. 내가 앞에서 계산한 값이 무조건 최선이라고..
· → Solver
프로젝트 시작 과정 취준을 하면서 백준으로 알고리즘 문제풀이를 하고 있는 도중에 내가 푼 문제들 그리고 나의 티어를 아이폰으로 확인해보고 싶었다. 아이폰으로 나의 알고리즘 풀이 현황과 그것을 위젯으로 표현하고, 알고리즘 풀이에 좀 더 재밌고 동기부여 될 수 있는 앱을 만들어보는 건 어떨까? 하는 생각에서 프로젝트를 시작하게 되었다. 시장 조사(?) 궁금해서 앱스토어를 검색해 봤다. 1개의 앱이 있었지만 위젯기능이 없었고, 무엇보다 내가 앱을 만들어보고 싶었는데 마침 내가 생각한 기능이 있는 앱이 1개밖에 없었기 때문에 충분히 앱으로 만들어 볼 만하다!라는 생각을 가지게 되었다. 어떻게 하면 유저정보를 가져올 수 있을까? 어떻게 하면 나의 유저정보를 가져올 수 있을까? 하는 생각에 백준 API나 Solve..
앱에서 유저에게 어떠한 입력값을 받는 경우가 많다. 이메일이나 전화번호 형식을 입력받는다던지, 숫자를 입력받아야 하는 상황이라면 정규표현식을 활용하여 문자열을 검사하면 된다. 공식문서에는 NSRegularExpression을 활용하여 문자열을 검사하는 방법이 나와있다. 하지만 디테일하게 문자열을 검사할 것이 아니라면 좀더 간단하게 검사도 가능하다. NSRegularExpression | Apple Developer Documentation An immutable representation of a compiled regular expression that you apply to Unicode strings. developer.apple.com 아래와 같이 간단한 함수로 문자열 검사가 가능하다! strin..
· → Problems
문제 소개 1929번: 소수 구하기첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.www.acmicpc.net첫째 줄에 m, n이 주어지면 m이상 n이하의 자연수를 출력하는 문제이다. 문제 풀이2부터 시작해서 배수를 소거해나가는 "에라토스테네스의 체" 알고리즘을 사용했다. 배열을 편하게 index와 숫자를 동일시해서 Array(0...n)으로 배열을 초기화 해주었다. 그리고 어떠한 수의 배수가 된다면 1로 변경하였다. Int(sqrt(Double(n))) + 1 이 부분은 어떤 의미이냐면 2부터 n까지의 모든 숫자의 배수를 하나하나 대조해보는 것이 아니라 100인 경우 10까지만 생각하면 된다는..
· → Problems
문제소개 1918번: 후위 표기식첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net우리가 주로 사용하는 중위표기식을 후위표기식으로 바꾸는 문제이다. 문제 풀이후위표기식 규칙과 stack을 통해 후위 표기식을 만들 수 있다.후위표기식 규칙1. 연산자가 아닌 경우 postfix에 추가한다. 2. 스택이 비어있는 경우 연산자를 스택에 넣어준다. 3. 스택이 비어있지 않은 경우 스택의 마지막 연산자가 "(" 이거나 우선순위가 낮을 때까지 스택의 마지막 요소를 postfix에 추가한다. 4. ")" 가 나왔을 경우 "(" 가 나올 때까지 스택..
· → Problems
문제 소개 17299번: 오등큰수첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.www.acmicpc.netAi가 수열 A에서 등장한 횟수를 F(Ai)라고 했을 때, Ai의 오등큰수는 오른쪽에 있으면서 수열 A에서 등장한 횟수가 F(Ai)보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오등큰수는 -1이다. 설명하기가 좀 복잡해서 아래 문제 캡처를 첨부한다. 문제 풀이처음 등장한 횟수를 어떻게 저장할까 고민했는데, 가장 효율적으로 접근이 가능한 데이터 구조는 딕셔너리 구조라고 생각했다. 따라서 아래와 같이 딕셔너리에 반복되는 횟수를 저장해 줬다.l..
· → Problems
문제 소개 10799번: 쇠막대기여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저www.acmicpc.net아래와 같이 ()로 이루어진 문자열이 주어졌을 때, 막대기는 몇조각으로 나뉠수 있는지를 물어보는 문제이다. 문제 풀이텍스트 대치 활용레이저를 "-" 로 바꿔준다음 "(" 가 나오게 된다면 막대기의 갯수를 더해주고, ")" 가 나오게 된다면 막대기의 갯수를 빼주고 count에 1을 더해주면 된다. 그리고 "-" 레이저가 나왔을때에는 총 조각의 count에 현재 막대기의 갯수를 더해준다. replacingOccurrences라는 것을 활용하면 쉽게 풀 수 있다.import..
Swift librarian
'분류 전체보기' 카테고리의 글 목록 (21 Page)