전체 글

개발함
Algorithm/Basic

[이.코.테] 알고리즘 문제 해결 과정

파이썬 기초 문법 문제를 대략 180개 정도 풀었더니 약간 자신감이 생겨서이젠 진짜 알고리즘 강의를 들어봐도 좋을 것 같다는 생각이 들었다.유튜브에 이코테 강의가 있어서 한번 들어봤다. 시간제한(수행시간 요구사항)시간 제한이 1초인 경우, (파이썬의 경우) 해당 시간 복잡도의 알고리즘을 구현하는게 좋다.( 여기서 N은, [1, 2, 3, 4] 일 경우 4 가 된다.)N의 범위시간 복잡도명칭500O(N3)삼차 시간2,000O(N2)이차 시간100,000O(NlogN)로그 선형 시간10,000,000O(N)선형 시간 알고리즘 문제 해결 과정1. 지문 읽기. -- 컴퓨터적 사고를 통해 단계별로 접근2. 요구사항(복잡도) 분석.3. 문제 해결을 위한 아이디어 찾기4. 소스코드 설계 및 코딩 : 대부분의 문제는 ..

Algorithm/Basic

[Python] Day 17 (1/5) -- rfind(), rindex(), endswith()

문자열.find(부분값)- 문자열의 왼쪽(앞)에서부터 부분값을 찾는다. 가장 처음 나온 인덱스를 리턴. 문자열.rfind(부분값)- 문자열의 오른쪽(앞)에서부터 부분값을 찾는다. 동일. 문자열.index(부분값) 문자열.rindex(부분값)- find, rfind 와 동일하게 진행된다.- 단, find 는 문자열에 부분값이 존재하지 않아도 error 를 일으키지 않지만index 는 error 를 일으킨다.  문자열.startswith(부분값)문자열.endswith(부분값)- 문자열에 부분값으로 시작하는지, 끝나는지 True/False 로 리턴   # pat로 끝나는 가장 긴 부분 문자열# pat은 반드시 myString의 부분 문자열로 주어집니다.# 대문자와 소문자를 구분합니다.def longest_pa..

Algorithm/Basic

[Python] Day 16 (5/5) -- 부분 대소문자 변환 (replace(), swapcase())

# 79) =================================================================# a -> A, 나머지 모두 소문자 변환def a_to_A(myString): return myString.lower().replace('a', 'A')'''JSconst solution = s => s.toLowerCase().replaceAll('a','A');'''print(a_to_A("abstract algebra")) # "AbstrAct AlgebrA"# 80) =================================================================def find_alp_and_up(my_string, alp): retur..

Algorithm/Basic

[Python] Day 16 (3/5) -- lower(), upper()

# 76) =================================================================def str_upper(myString): return myString.upper()'''solution = lambda n : n.upper()''''''JSconst solution = s => s.toUpperCase()Javareturn myString.toUpperCase();'''print(str_upper("aBcDeFg")) # "ABCDEFG"# 77) =================================================================def str_lower(myString): return myString.lo..

Algorithm/Basic

[Python] Day 15 (5/5) -- (JS) 단항연산자 (+)

// myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0return +(myString.toUpperCase().includes(pat.toUpperCase())); 단항연산자 (+)문자열을 숫자로 변환해 줌boolean 값을 숫자로 바꿀 때 용이할 듯!   '''리스트(배열), 문자열# 71) 조건에 맞게 수열 변환하기 1# 72) 조건에 맞게 수열 변환하기 2# 73) 1로 만들기# 74) 길이에 따른 연산# 75) 원하는 문자열 찾기'''# 71) ==========================================================================# 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다.def..

Algorithm/Basic

[Python] Day 15 (4/5) -- 리스트의 모든 수를 곱하는 방법

# forresult = 1for n in numbers: result *= n# whileresult = 1i = 0while i  [1] 루프 사용- 직관적이고 읽기 쉬움.- 안전함- 외부 모듈이 필요 없음.- 코드가 다소 긴 편.  from functools import reducereduce(lambda x, y: x * y, numbers) [2] functools.reduce- 코드 간결.- 외부 모듈 필요.  import mathmath.prod(numbers) [3] math.prod (Python 3.8 이상)- 가장 간결하고 직관적. (가능하면 reduce 보다 prod 추천)- 버전 확인 필요.  eval('*'.join(map(str, numbers)))eval('*'.join([s..

Algorithm/Basic

[Python] Day 15 (2/5) -- do-while, 리스트 복사

[1] do-whilewhile True: # 실행문 if 조건: break 파이썬에서 do while 문은 while True 로 따라할 수 있다.꼭 조건문과 break 를 써서 무한 루프를 만들지 말자.  [2] 리스트 복사original = [1, 2, 3]# 단순 복사copy1 = original# 얕은 복사copy2-1 = original.copy()copy2-2 = original[:]# 깊은 복사copy3 = copy.deepcopy(original) 1. 단순 복사original 과 copy1 은 같은 주소값을 가리킨다. 단지 이름만 다를 뿐이다.즉, original 을 변경하거나 copy1 을 변경할 경우 서로에게 동시에 영향을 준다. 2. 얕은 복사copy2 를 수정..

Algorithm/Basic

[Python] Day 14 -- full code

'''리스트(배열)# 66) 홀수 vs 짝수# 67) 5명씩# 68) 할 일 목록# 69) n보다 커질 때까지 더하기# 70) 수열과 구간 쿼리1'''# 66) ====================================================================# 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 returndef odd_vs_even(num_list): odd, even = 0, 0 odd = sum(num for num in num_list[1::2]) even = sum(num for num in num_list[::2]) return max(odd, even)'''return max(..

함s
함함ː