![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/c3nCBs/btq4kbDMXin/9tRNPpvNjrpi0oAWExx0D0/img.png)
포인터를 정해놓고 리스트 인덱스를 옮겨가며, 연산 후 비교하는 로직을 구성하면 쉽게 풀 수 있으나, 문제는 세 수의 합이기 때문에 자칫 삼중 for문을 사용하는 불상사가 발생할 수 도 있다. 이 문제 역시 두 개의 포인터를 사용하여 쉽게 풀이가 가능하다. 1 씩 증가하는 리스트 인덱스 i를 만들어 놓은 뒤, i 뒤쪽의 나머지 배열의 양 끝을 left와 right로 나눈다. 이때, i, left, right 위치의 값들을 더하여 0과 비교하고, 0보다 작다면 right를 감소, 크다면 left를 증가시키는 방식으로 풀이할 수 있다. from typing import List def sum_of_three(nums_list: List[int]) -> List[List[int]]: nums_list.sort(..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/ty2gO/btq4lNCaMQE/FWhxx5M6TsAB2WHVojwGi0/img.png)
리스트를 사용하는 조금 난이도 있는 문제를 가지고 왔다. 벽들의 높이를 리스트로 입력받아, 빗물이 쌓일 수 있는 면적을 구하는 문제이다. 처음에는 한개의 포인터로, 더 높은 벽을 만날 때마다 포인터를 높은 벽의 높이로 갱신하며, 이전 포인터 까지의 격차를 더하여 푸려고 계획했다. 그러나, 포인터를 한개만 사용하면, 가장 높은 벽(예시에서는 3)을 만난 뒤에는 포인터를 갱신할 수 없는 문제가 발생하고, 이 문제를 해결하려면 꽤나 복잡한 로직이 동반된다. 그래서, 가장 높은 벽을 기준으로 양 끝, 두개의 포인터를 이용하여 풀이를 작성했다. 1. 두개의 포인터를 이용하여 풀이 from typing import List def trap(rain: List[int]) -> int: sum = 0 left = 0 ..
지난 포스팅에서 DBA를 설명하면서, 하나의 Connection 객체가 여러 작업을 수행할 때, 각 작업마다 Connection 객체를 생성하는 대신에 Singleton 패턴을 이용하여 하나의 Connection 객체를 가지고 작업하는 방법을 실습해 봤다면, 이번엔 생성된 Connection 객체와 해당 객체의 사용 여부를 따로 저장하는 서브 클래스를 생성하여 여러 명의 사용자가 각각 다른 작업을 수행할 때 사용할 Connection들을 모아 다루는, 좀 더 심화된 DBA 코드를 알아보려고 한다. 코드가 살짝 길긴한데, 전체적인 맥락을 이해한다면 그렇게 복잡하게만 느껴지는 코드는 아니다. Connection 객체를 여러개 만들어 동시에 사용하기 위한 코드이기 때문에, 역시 가장 중요한 것은 각각의 Con..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/LTvCE/btq4cFly0fe/0aohxrnFSX7QHkIMLnUPn0/img.png)
선형 자료구조를 다루는 가장 기초적인 문제로, 리트 코드의 1번 문제라서 한번 가져와 봤다. 문제는 단순 비교하여 값을 리턴한다고 구성하면 아마 초등학생도 풀 수 있는 정도의 난이도의 문제이지만, 의외로 최적화할 수 있는 방법이 많아서 다뤄보려고 한다. 1. 무차별 대입 방식 from typing import List def twoSum(nums: List[int], target: int) -> List[int]: for i in range(len(nums)): for j in range(i+1, len(nums)): if nums[i] + nums[j] == target: return [i, j] if __name__ == '__main__': nums = [2, 5, 7, 9] target = 9 p..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/dOUGMq/btq4bPBGong/FHcjqNmtS8EOzb0J5K5rFK/img.png)
단순 문자열 조작 파트의 마지막 문제이다. 입력으로 어떤 문자열이 주어졌을 때, 해당 문자열에서 가장 긴 부분 팰린드롬을 찾으라는 문제이다. 입출력 예제는 다음과 같다. 문제는 두개의 포인터가 중앙을 중심으로 확장하는 형태로 풀 수 있다. 두개의 포인터는 처음엔 문자열 2자리, 3자리로 작은 규모로 시작하여 팰린드롬을 발견했을 때, 중앙을 중심으로 이를 확장하는 방식이다. def longestPalindrome(s: str) -> str: #팰린드롬 판별 및 투 포인터 확장 def expand(left: int, right: int) -> str: while left >= 0 and right < len(s) and s[left] == s[right]: left -= 1 right += 1 return ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/KU7GR/btq39WuzivL/J2L3tSnmUDV2dd47nwdzg0/img.png)
Python의 Thread도 자바와 동일하게 동시에 여러 함수나 프로그램을 실행할 수 있도록 해주며, 이는 Python을 활용한 대부분의 응용 프로그램에서 유용하게 사용이 가능하다. 파이썬에서 멀티 스레딩이나 타이머 기능을 사용하기 위해서는 우선 threading 모듈을 import 해줘야한다. 바로 예제를 하나 보도록 하자 import threading def count(start, end): for i in range(start,end): print(i) thread = threading.Thread(target=count, args=(1, 10)) thread.start() print('hey! my name is main') 위와 같이 간단한 스레딩 예제 코드를 적어봤다. 실행해보면, 이렇게, 메..
HTML 문서에는 텍스트가 상당히 많은 비중을 차지하며 CSS 를 사용해 텍스트의 스타일을 지정하는 일이 많기 때문에 font 설정을 css를 이용하여 한번에 설정해놓고 사용할 수 있다. 1. font-size: 텍스트의 크기를 설정 ABCD 2. color: 텍스트의 색상 ABCD 3. font-style: 텍스트의 스타일 ABCD 4. font-weight: 텍스트의 굵기 ABCD 5. font-variant: 대소문자에 대한 스타일 ABCD 6. line-height: 줄 간격 지정 ABCD 7. font: 텍스트의 스타일을 한번에 설정할 수 있는 속성 p { font style: italic; font weight: bold; font size: 12px; line height: 1.6; font..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/Bf2D3/btq3WnlIg4O/Dw243t9knvH52AcpGyNZO1/img.png)
CSS3? Cascading Style Sheets(CSS) 언어의 가장 최신 버전이고 CSS2.1 을 확장하며 모듈기반으로 개발중인 표준이다 . 다중열(multi columns), 유동적인 상자(flexible box), 격자 배치(grid layouts)뿐만 아니라 둥그런 모서리(rounded corners), 그림자(shadows) , 부드러운 색의 변이(gradients) , 변이(transitions), 움직임 (animations) 등 을 새로 지원 한다. CSS3에 추가된 속성 - Multi - columns - Flecible box - Grid layouts - Rounded corners - Shadows - Gradients - Transitions - Animations
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bpCA2w/btq36q8OFZm/BTve5AC16edEjGQgGk1KKk/img.png)
css? Cascading Style Sheets 의 약자로 마크업 언어가 실제 표시되는 방법을 기술한 언어이다. HTML, XML 같은 마크업 언어 문서의 스타일을 꾸밀 때 사용하는 스타일 시트라고 할 수 있다. css 적용 방법 css는 기본적으로 3가지 import 방법이 있지만, 대부분의 경우 아래와 같이 프로젝트 내부에 생성해놓은 css 파일을 link 태그를 이용하여 import 하는 방식을 가장 많이 사용한다. css 선택자 선택자는 특정 요소를 선택하여 스타일을 적용할 수 있게 해준다. css 에서 스타일을 정의할 때 선택자를 이용하여 요소를 선택하고, 어떻게 표현할 지 선언하여 사용한다. - 전체 선택자 * : HTML 페이지 내부의 모든 태그를 선택 * { color: red; } - ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bSoivC/btq3UFtc06l/1V1PdXDA1aXQKYnepjh2c0/img.png)
문제: 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자를 구분하지 않으며, 구두점 또한 무시한다. 풀이는 리스트 컴프리헨션과 Counter를 이용한다. 그렇게 어려운 문제는 아니다. 정규 표현식을 이용하여 단어가 아닌 모든 문자를 공백으로 치환한 뒤에 banned 리스트 내에 있는 단어를 제외한 단어의 리스트를 따로 만들어 주고, 그 개수를 세주기만 하면 끝난다. import collections import re from typing import List def mostCommonWord(paragraph: str, banned: List[str]) -> str: words = [word for word in re.sub('[^\w]', ' ', paragraph).lower()...
- react
- redux
- 정보보안기사 #실기 #정리
- 파니노구스토
- javascript
- redux-thunk
- Async
- 인천 구월동 맛집
- await
- AsyncStorage
- react-native
- 인천 구월동 이탈리안 맛집
- Promise
- 맛집
- 이탈리안 레스토랑
- Total
- Today
- Yesterday