
📎 간략한 문제 정리 Back Tracking에서 가장 유명한 문제 중 하나인 N-Queen을 다시 풀어보았습니다. 체스에서 Queen은 수직, 수평, 대각선 방향으로 거리의 제한없이 이동할 수 있을 때, N개의 Queen을 배치할 수 있는 모든 경우의 개수를 출력하는 문제입니다. 📈 문제 분석 이 문제의 포인트는 크게 두가지 입니다. BackTracking을 어떻게 구현할 것인가 Queen을 배치 가능한지 여부 판단하기 Back Tracking 부분은 N과 M 문제와 크게 다르지 않습니다. 반복을 하며 조건을 확인하는 BackTracking의 기본 구조를 가지고 있습니다. 방문 여부를 체크하고, 배치가 완성되면 배치 가능한 모양이 한개 생성되므로 결과에 +1을 해줍니다. 더 까다로운 포인트는 2번인데,..

📎 간략한 문제 정리 자연수 N과 M이 주어지고, 아래 조건을 만족하는 길이가 M인 수열을 모두 구합니다. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 📈 문제 분석 N과 M(1)과 거의 비슷한 문제입니다. 오름차순을 이루는 부분 수열을 찾는 문제로 중복이 없고, 부분 수열의 크기가 정해진 것이 포인트입니다. 🙋♂️ 내가 처음 생각한 해결 방법 사실 파이썬에는 모듈인 itertools에 combination 함수가 존재합니다. 그래서 N의 요소에서 M개를 뽑는 것은 어렵지 않지만 일부러 이 방법을 사용하지 않았습니다. 이 모듈을 사용하지 않을 때 필요한 것은 모든 요소를 접근하며 조건에 만족할 경우 결과에 넣는 작업입니다. 이 때 사용되는 백트래킹(Back..

📱 Auto Layout - Anatomy of a Constraint 🎯 Auto Layout이란? Auto Layout Guide의 정의를 살펴보면 아래와 같습니다. Auto Layout dynamically calculates the size and position of all the views in your view hierarchy, based on constraints placed on those views. 오토 레이아웃은 뷰에 정의된 제약들을 기반으로 뷰 계층에서 모든 뷰들의 크기와 위치를 동적으로 계산해줍니다. 예시는 다음과 같습니다. For example, you can constrain a button so that it is horizontally centered with an Im..

📎 간략한 문제 정리 위의 그림처럼 한 변의 길이가 2의 거듭제곱꼴인 N의 정사각형(NxN)이 존재합니다. 이 사각형은 길이가 1인 단위 정사각형으로 이루어져 있으며 색깔을 가집니다. 만약 이 정사각형이 모두 색깔이 같다면 자르지 않지만, 하나라도 색깔이 다른 부분이 있다면 종이 가로 세로의 가운데를 잘라 4등분하여 위의 작업을 반복합니다. 모든 작업이 완료되면 흰 종이(0으로 마킹)의 개수과 파란 종이(1로 마킹)의 개수를 출력합니다. 📈 문제 분석 전형적인 분할 정복 문제입니다. 특정 시점에서 조건에 맞는지 확인(모두 같은 색)한 후, 조건에 맞으면 추가 작업을 진행하지 않고, 조건을 만족하지 않으면 재귀적으로 문제를 다시 해결해나가는 구조입니다. Merge Sort(병합 정렬)처럼 개념으로 배울 때..

Classes, Structures, Enumerations 📌 유사점(Similarity) 클래스(Class), 구조체(Struct), 열거형(Enum)은 Swift의 기본 자료구조 블럭입니다.(These are the 3 fundamental building blocks of data structures in Swift) 세가지 구조 모두 같은 방식으로 정의됩니다. // 키워드 + 이름 + {} class testClass { } struct testStruct { } enum Op { } 세가지 자료구조 모두 프로퍼티(Properties)와 함수(Functions)를 가질 수 있습니다. 하지만 열거형(Enum)은 저장 프로퍼티(Stored Property)를 가질 수 없습니다. 클래스와 구조체만 저..

튜플(Tuples) 🗜 튜플이란? 여러가지 타입들을 묶어 하나의 타입으로 선언해주는 것입니다. 2개 뿐만 아니라 3개 이상의 타입의 값들도 튜플로 묶일 수 있으며 이렇게 묶인 튜플은 타입이 사용될 수 있는 곳이라면 어디서도 사용 가능합니다. 💻 튜플의 사용 방법 튜플의 사용 예시는 아래와 같습니다. // 1. 튜플의 요소 수만큼 변수를 할당해 사용 let x: (String, Int, Double) = ("hello", 5, 0.5) let (word, number, value) = x // tuple에 접근할 때 요소들이 이름을 갖습니다. // 요소의 개수가 맞지 않는다면 컴파일 에러가 발생합니다. print(word) print(number) print(value) // 2. 튜플을 정의할 때 ele..

🎯 Protocol(프로토콜) vs Inheritance(상속) 📎 Protocol 및 Inheritance 되짚기 Protocol을 학습하며 지속적으로 학습한 내용은 'blueprint(청사진)이다', '공통 기능을 가진다' 등 입니다. 이러한 학습을 하며 자연스럽게 동시에 떠오르는 생각은 위의 특징이 클래스의 상속(inheritance)와 유사하다는 점이며 이 두가지 개념을 구분할 필요성을 느꼈습니다. 우선 구분을 하기 전, 각각의 특징을 상기할 필요가 있습니다.위의 정의는 기본적인 것으로 정확한 차이를 이해하기 어렵습니다. 그래서 예시 상황을 통해 두 개념을 조금 더 알아볼 필요가 있습니다. 상속 : 상속받을 클래스의 모든 기능을 물려받는다.(부모의 모든 기능을 자식 클래스가 물려받는다) 프로토콜:..

팰린드롬 연결 리스트(Palindrome Linked List - 234 from Leet Code) Reference: Palindrome Linked List 🎯 문제 의의 문제 자체의 난이도는 높지 않았습니다. 연결 리스트로 구현된 자료를 반환하며 리스트에 담아 처리하면 기존의 팰린드롬 문제와 다를게 없기 때문이고, 또한 이러한 풀이가 다른 방식의 풀이와 속도 측면에서 큰 차이가 나지 않기 때문에 이 방법으로도 충분한 풀이입니다. 아래는 제 풀이입니다. node를 순회하며 값을 head_list에 담아 처리하고, head_list의 palindrome 여부를 판단합니다. 위의 return문의 Boolean은 요소를 하나하나 탐색하며 팰린드롬 여부를 파악하는 것보다 더 빠른 효율을 보여줍니다. 기능적..
- Total
- Today
- Yesterday
- 토마토#백준알고리즘#Python
- Triangle#Sorting#Codility#Python
- 섬의개수#백준알고리즘#Python
- 나무자르기#BOJ#이분탐색#Python
- 텀 프로젝트#백준알고리즘#Python
- Distinct#Codility#Python
- 파이썬알고리즘인터뷰#4장
- 랜선자르기#이분탐색#BOJ#Python
- 백준 알고리즘#BackTracking
- Swift#Tuples#Range
- 병든 나이트#BOJ#탐욕법#Python
- PassingCars#Codility#Python
- 암호코드#dp#BOJ#Python
- 종이자르기#분할정복#BOJ#Python
- API#lazy#
- 터틀비치#리콘#xbox#controller
- django#slicing
- 반복수열#백준알고리즘#Python
- 공유기 설치#BOJ#이분탐색#Python
- 쿼드트리#BOJ#분할정복#Python
- N으로 표현#DP#Programmers#Python
- 리모컨#완전탐색#BOJ#Python
- Brackets#Stacks and Queues#Codility#Python
- django
- filter#isalnum#lower
- 미로 탐색#백준알고리즘#Python
- 날짜 계산#BOJ#완전탐색#Python
- 순열사이클#BOJ#Python
- 배열합치기#분할정복#BOJ#Python
- NumberofDiscIntersections#Codility#Sort#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |