본문 바로가기

728x90
반응형

PYTHON

(41)
[백준 10818 | python3 | 1차원 배열] 1. 최소, 최대 Q) N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력) 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 5 20 10 35 30 7 출력) 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 7 35 1. python 내장 함수로 풀기 1) sort() 사용 2) max(), min() 사용 2. 배열 이용해서 풀기
[python3] spring SQL log 파라미터 치환해서 추출하기. spring의 mybatis 로그에서 ? 부분에 파라미터를 넣어서 출력하고 싶다!! why?? 파라미터 개수가 많을 때 ? 찾아서 입력하기 귀찮음.. 한 번 간단한 파이썬 실행파일을 만들어보자. 메모장에서 만들어본다. 1. 메모장을 켜고, 2. 파이썬으로 알고리즘을 만든다 3. ctrl+s 로 저장할 때 파일 이름은 파일명.py로 하고 파일 형식은 "모든 파일"로 한다. 4. 끝! ** 참고로 여기서 사용할 문자열 조작 관련 함수는 split(), find(), replace() 이다. sqlParsing.py #SELECT * FROM TBL_ADDR_BOOK WHERE MBR_ID = ? AND ADDR_BOOK_GRP_IDX = ? ORDER BY NM ASC LIMIT ?, ? #Parameter..
[python3 | 알고리즘] 15. 문자열 조작(그룹 애너그램) [조건] 문자열 배열을 받아 애너그램 단위로 그룹핑하기 ** 애너그램 : 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것 [입력] ["eat", "tea", "tan", "ate", "nat", "bat"] [출력] [ ["ate", "eat", "tea"], ["nat", "tan"]. ["bat"] ] 1. 정렬, 딕셔너리 사용 strs = ["eat", "tea", "tan", "ate", "nat", "bat"] def groupAnagrams(self, strs: List[str]) -> List[List[str]]: #딕셔너리 정의 anagrams = collections.defaultdict(list) for word in strs: #정렬해서 딕셔너리에 추가 anagrams[''.joi..
[python3 | 알고리즘] 14. 문자열 조작(가장 흔한 단어) [조건] 1) 금지 단어를 제외한 가장 흔하게 등장하는 단어 출력 2) 대소문자 구분 X 3) 구두점(쉼표, 마침표 등) 무시 [입력] paragraph = "Bob hit a ball, the hit BALL flew far after it was hit." banned = ["hit"] [출력] "ball" 1. 리스트 컴프리헨션, Counter 객체 사용 - 전처리 작업 필요 - 정규식 사용 * 정규식 1) \w ==> 단어 문자를 뜻함 2) ^ ==> not #Counter 객체 사용 X def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: words = [word for word in re.sub(r'[^\w]', ' ', pa..
[python3 | 알고리즘] 13. 문자열 조작(로그파일 재정렬) [조건] 1) 로그 가장 앞 부분은 식별자 2) 문자로 구성된 로그가 숫자 로그보다 앞으로 3) 식별자는 순서에 영향을 주진 않지만, 문자가 동일할 경우 식별자 순으로 함 4) 숫자 로그는 입력 순으로 한다. [입력] logs = ["dig1 8 1 5 1", "let1 art can", "dig2 3 6", "let2 own kit dig", "let3 art zero"] [출력] ["let1 art can", "let3 art zero", "let2 own kit dig", "dig1 8 1 5 1", "dig2 3 6"] 1. 람다 + 연산자 이용 - 문자 vs 숫자 구분 def reorderLogFiles(self, logs: List[str]) -> List[str]: letters, digit..
[python3 | 알고리즘] 12. 문자열 조작(문자열 뒤집기) 1. 투 포인터를 이용한 스왑 - 2개의 포인터를 이용해 범위를 조정해가며 풀이 - 리턴 없이 리스트 내부를 직접 조작할 때 사용. def reverseString(self, s:List[str]) -> None: left, right = 0, len(s) - 1 while left None: s.reverse() 3. 슬라이싱 사용 - 성능은 좋지만 가끔 안되는 플랫폼이 있다. def reverseString(self, s: List[str]) -> None: s = s[::-1]
[python3 | 알고리즘] 11. 문자열 조작(팰린드롬) 1. 펠린드롬(Palindrome)인지 체크하기 - 조건 : 대소문자 구분하지 않음, 영문자와 숫자로만으로 구성 - 사용 함수 1) isalnum() : 영문자, 숫자 여부 판별 함수 2) lower() : 모두 소문자로 바꾸는 함수 2. 구현 방법 - 리스트 이용 - Deque 이용 - 슬라이싱 이용 리스트로 구현 - O(n제곱) - 포인트 : pop(0)와 pop() 이 같은가? # list 선언 strs = [] Deque 자료형 이용 - O(n) : 리스트보다 속도 빠름 - 포인트 : popleft()와 pop() 이 같은가? # deque 선언 strs : Deque = collections.deque() 슬라이싱 이용 - Deque 보다 속도 빠름. C언어보다는 느림 - 포인트 : 정규식 이용..
[python3] 10. 빅오 표기법(big-O) 1. 빅오 표기법 - 입력값이 무한대로 향할 때 함수의 상한을 설명하는 수학적 표기 방법 2. 파일 업로드 예시 - 파일 크기(n) , 소요시간(O(n)) - 파일 크기와 소요시간은 비례한다. - 접근적 실행 시간(시간복잡도 == 계산복잡도) ==> 비용(n) 고려 없이 파일(n)이 아주 클 때 물리적으로 비행기를 통해 배달하는 시간(항상 일정한 시간 소요) 3. 빅오로 시간복잡도 표현 - 최고차항만을 표기한다. 상수항은 무시한다. O(1) - 입력값(n)이 아무리 커도 실행시간은 일정함. 최고의 알고리즘이다. O(log n) - 입력값(n)에 영향을 받지만 log n은 큰 영향을 받지는 않는다. O(n) - 입력값 만큼 실행 시간에 영향을 받는다. - 선형시간 (linear-time) 알고리즘 - 정렬..

728x90
반응형