📎 간략한 문제 정리 기존 사칙연산의 연산자 우선순위가 아니라 임의로 연산자 우선순위를 정해 주어진 expression의 연산을 합니다. 연산 결과의 절대값 중 가장 큰 값을 반환합니다. 📈 문제 분석 이 경우 모든 경우를 탐색하는 Brute-Force(완전 탐색)을 통해 최적의 결과를 찾아냅니다. 🙋♂️ 내가 처음 생각한 해결 방법 기존의 제 풀이는 연산자 우선순위대로 탐색하며 연산을 진행하고, 다음 연산자를 검색하며 다음 연산을 진행하는 방식으로 결과를 찾았습니다. 하지만 공부를 위해 이 문제를 새로 풀며 중위 표기를 후위 표기로 바꾸는 과정에 연산자 우선순위가 있음을 기억했고 그 연산자 우선순위 표만 바꾸는 구조로 작성하면 되므로 중위를 후위로 바꾸는 메소드 한개, 후위 연산을 계산하는 메소드 한..
🕹 UIBarButtonItem Style(바 버튼 아이템 스타일) 🎯 What is Bar Button Style? iOS의 Navigation Bar 위에 버튼을 생성하면서 Bar Button의 스타일을 지정해줄 때 사용합니다. Bar 버튼의 스타일에는 세가지가 있는데 책에서 항상 Bordered를 사용하라는데에서 의구심이 생겼습니다. 다른 옵션으로 변경해줘도 UI에서 변화가 없고, 의미상 Bordered면 테두리 같은 경계선이 있어야 할 것 같은데 없기 때문입니다. 버튼 스타일의 정의는 아래의 Apple 공식 문서를 참고하면 알 수 있습니다. 위의 글을 보면 스타일은 enum으로 구현되어 있습니다. 🙋 What's the difference? plain과 bordered 옵션의 차이를 찾으려..
📎 간략한 문제 정리 손가락을 움직이며 키패드를 누르는데 어떤 손가락으로 누를지를 기록하여 출력하는 문제입니다. 📈 문제 분석 특정한 알고리즘을 사용하는 것이 아니라 문제 조건을 그대로 시뮬레이션 하는 문제입니다. 🙋♂️ 내가 처음 생각한 해결 방법 문제의 조건을 그대로 시뮬레이션하면 되는 문제입니다. 거리를 구하는 방법이 중요한데 이동이 위, 아래, 좌, 우로만 이루어지므로 절대적인 거리(피타고라스의 정리)를 직접 구할 필요 없이 좌로, 우로 이동하는 것만 생각하면 됩니다. 💻 풀이한 코드 def solution(numbers, hand): keypad = {"1": (0, 0), "2": (0, 1), "3": (0, 2), "4": (1, 0), "5": (1, 1), "6": (1, 2), "7..
📱 Functions(함수) vs Computed Property(연산 프로퍼티) 🎯 문제 정의하기 예시를 통해 문제를 정의해보겠습니다. 티켓을 뽑아주는 발권기가 있다고 할 때 발권기는 현재 상태의 티켓 번호를 갖고, 누군가 티켓을 뽑는다면 티켓 번호를 하나 높여 상태를 유지합니다. 이것을 코드로 구현해보면 struct ticketGenerator { var ticketNumber: Int } 로 표현할 수 있습니다. 이제 추가적으로 필요한 것은 발권시 숫자를 하나씩 높여가는 로직입니다. 이것을 메소드로 구현하면 struct ticketGenerator { var ticketNumber: Int func raiseTicketNumber() -> Void { ticketNumber += 1 } } 가 됩니..
🙋 protocol에 메소드 없이 extension에서 메소드 구현하기 vs protocol에 메소드를 정의 후 extension에 구현하기 🎯 개념 이해하기 protocol default implementation을 하기 위해 protocol의 extension을 통해 메소드를 구현하다가 보면 두가지 옵션이 생깁니다. 예시를 통해 문제를 정의해보겠습니다. protocol Bank { // 이 부분 없이 구현 가능 func openAlert() func closeAlert() // } extension Bank { func openAlert() { print("은행 개점") } func closeAlert() { print("은행 폐점") } } 은행의 개점과 폐점을 알리는 메소드 openAlert와 c..
📎 간략한 문제 정리 주어진 숫자 N을 반복 활용해서 사칙연산을 통해 number를 만듭니다. number를 만들기 위해 필요한 N의 최소 개수를 출력합니다. 📈 문제 분석 N을 최대로 활용할 수 있는 개수가 8개로 한정 되어있어 보다 쉽게 풀이 가능한 문제입니다. 단순히 5로만 연산하는 것이 아니라 5를 2개 사용할 경우 55가 되기 때문에 상황 설계를 엄밀히 할 필요가 있습니다. 개수만 늘려가며 사칙연산의 경우를 추가하면 안됩니다. 🙋♂️ 내가 처음 생각한 해결 방법 그래프적으로 문제를 인식하여 Pruning을 생각해보았지만 뺄셈 연산이나 나누기 연산처럼 값이 작아지는 경우가 있기 때문에 Pruning 할 수 없었습니다. 포인트는 특정 개수의 N으로 만들 수 있는 모든 경우의 수를 기록하고, 그 안..
📎 간략한 문제 정리 n명의 사람이 입국심사를 위해 줄을 서서 기다리고 있습니다. 심사관마다 심사하는데 걸리는 시간이 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하려고 합니다. 모든 사람이 심사를 받는데 걸리는 시간의 최소값을 return하는 함수를 작성합니다. 📈 문제 분석 입국심사를 기다리는 사람은 1명 이상 1,000,000,000명 이하입니다. 또한 심사관은 1명 이상 100,000명 이하이고, 각 심사관이 한 명을 심사하는데 걸리는 시간은 1분 이상 1,000,000,000분이하입니다. 시뮬레이션으로 각 상황을 그리며 결과를 비교하면 시간초과가 발생할 수 밖에 없는 범위입니다. O(N)만..
📎 간략한 문제 정리 n명의 권투선수의 승패가 배열로 주어집니다. 이 배열에서 승패를 기준으로 순위를 매겼을 때, 위치가 확정되어있는 사람의 수를 구하는 문제입니다. 📈 문제 분석 예시의 배열을 분석해보면에서 4는 3번에게 이기고, 4는 또 2번에게 이기고, ... 2번은 5번에게 이깁니다. 이를 기준으로 생각해보면 2는 1, 3, 4에게 지고 5번에게 이기므로 반드시 4위에 위치합니다. 1을 제외하고 생각해보면 4, 3, 2, 5의 위치는 서로 결정이 되지만 1이 4 앞에 올 수도, 4와 3 사이에 올 수도, 그리고 3과 2 사이에 올 수 있으므로 1, 3, 4의 위치는 확정되지 않습니다. [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 🙋♂️ 내가 처음 생각한 해결 방법 처..
- Total
- Today
- Yesterday
- 터틀비치#리콘#xbox#controller
- 순열사이클#BOJ#Python
- 백준 알고리즘#BackTracking
- 토마토#백준알고리즘#Python
- 날짜 계산#BOJ#완전탐색#Python
- django#slicing
- 리모컨#완전탐색#BOJ#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 텀 프로젝트#백준알고리즘#Python
- N으로 표현#DP#Programmers#Python
- API#lazy#
- Swift#Tuples#Range
- 종이자르기#분할정복#BOJ#Python
- 미로 탐색#백준알고리즘#Python
- 섬의개수#백준알고리즘#Python
- 쿼드트리#BOJ#분할정복#Python
- Triangle#Sorting#Codility#Python
- Brackets#Stacks and Queues#Codility#Python
- PassingCars#Codility#Python
- 병든 나이트#BOJ#탐욕법#Python
- 파이썬알고리즘인터뷰#4장
- Distinct#Codility#Python
- django
- 랜선자르기#이분탐색#BOJ#Python
- 나무자르기#BOJ#이분탐색#Python
- filter#isalnum#lower
- 공유기 설치#BOJ#이분탐색#Python
- 암호코드#dp#BOJ#Python
- 배열합치기#분할정복#BOJ#Python
- 반복수열#백준알고리즘#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 | 29 |
| 30 |