자료구조 & 알고리즘 특강 (강창민 튜터님) 시간복잡도 시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 컴퓨터과학에서 알고리즘의 시간복잡도는 입력을 나타내는 문자열 길이의 함수로서 작동하는 알고리즘을 취해 시간을 정량화하는 것이다. (출처: 위키피디아) 프로그램의 수행 성능을 최악의 경우를 가정하여 정량화하는 방법으로 고안한 알고리즘이 정말로 유용한지 판단하는 좋은 기준이 된다. Big-O(빅오) 표기법으로 표시(ex O(1), O(N), O(N²))하며, N의 지수부분만이 유효하게 쓰이고 나머지(계수와 상수)는 절삭한다. 공간복잡도 문제를 해결하는데에 대한 공간과의 상관관계를 가리킨다. 최적화가 덜 되어있다고 해도 당장은 프로그램을 돌리는 컴퓨팅 리소스의 성능을 올리면 해결..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 def solution(s): return s.lower().count('p') == s.lower().count('y') *key point: 문자열내 모든 알파펫을 소문자로 만드는 메서드 .lower()를 활용한다. 비교연산의 결과로 bool 타입이 바로 얻어지므로 코드를 아주 간결하게 짤 수 있다.
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 def solution(n): if n ** 0.5 % 1 == 0: return (n ** 0.5 + 1) ** 2 else: return -1 *key point: 1로 나눈 나머지가 0이면 양의 정수라고 할 수 있다.
자료구조 & 알고리즘 특강 (강창민 튜터님) 알고리즘의 정의 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전] 인상깊었던 문제 (예제 3) 1. 입력으로 소문자의 알파벳 순으로 정렬된 문자열이 입력됩니다. 2. 각 알파벳은 중복이 가능합니다. 3. 중간에 없는 알파벳이 있을 수도 있습니다. 입,출력 예시와 같이 입력 문자열에 나타나는 각 알파벳의 종류,갯수를 요약하여 나타내시오. # 문제의 번호별 조건에 대한 입력 예시와 출력 Ex 1) abc # a1/b1/c1 Ex 2-1) aaabbbc # a3/b3/c1 Ex 2-2) abbbc # a1/b..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 def solution(n): answer = list(reversed(list(map(int, str(n))))) return answer *key point: 주어진 숫자의 각 자릿수를 요소로 가지는 리스트를 map 함수로 만들어주고, reversed 함수를 이용하여 뒤집어준다. 이때, 자료형이 리스트가 아니기 때문에 다시 list로 변환해주어야한다.
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1) 수학적 접근 def solution(n): answer = 0 length = len(str(n)) for i in range(1, length + 1): print(i, length) m = n // 10 ** (length - i) n -= 10 ** (length - i) * m answer += m return answer 2) 자료형, map 함수 활용한 접근 def solution(n): answer = sum(list(map(int, str(n)))) return ans..
문제 링크 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 문제 풀이 t = int(input()) for _ in range(t): x1, y1, x2, y2 = map(int, input().split()) n = int(input()) cnt = 0 for _ in range(n): cx, cy, r = map(int, input().split()) r1 = ((x1 - cx) ** 2 + (y1 - cy) ** 2) ** 0.5 r2 = ((x2 - cx) ** 2 + (y2 - cy) ..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 def solution(s): num_list = list(map(int, s.split())) max_min_list = [] max_min_list.append(str(min(num_list))) max_min_list.append(str(max(num_list))) return ' '.join(max_min_list) *key point: 입력형태와 출력형태만 신경 쓰면 크게 어렵지 않다. map함수, split메서드, join메서드 등을 잘 활용한다.
자료구조 알고리즘 원격 강의 진도 나가기 시간복잡도와 공간복잡도 시간복잡도: 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계 공간복잡도: 입력값과 문제를 해결하는 데 걸리는 공간과의 상관관계 *상수나 계수는 무시할 정도이며, 차수가 가장 중요함 *공간복잡도를 희생해서라도 시간복잡도를 낮추는 것이 베스트 점근표기법 빅오(Big-O): 최악의 성능이 나올 때의 연산량 표기 ex) O(N) 빅오메가(Big-Ω): 최선의 성능이 나올 때의 연산량 표기 ex) Ω(1) * 최악의 경우를 대비해야 하므로 알고리즘 분석은 빅오 표기법 위주로! Array vs Linkedlist *Python의 경우: []로 감싸는 list 자료형이 array로 만들어졌으나, 동적 배열이라는 것을 이용하여 배열의 길이가 늘어나도..
파이썬 문법 뽀개기 원격 강의 진도 나가기 파이썬으로 알고리즘 공부를 하고 있었기 때문에 완전 생소한 내용은 아니었지만, 알고 있던 것은 복습하고 새로운 것은 집중해서 공부하는 시간을 가졌다. for문에서 enumerate()의 활용 fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지'] for i, fruit in enumerate(fruits): print(i,fruit) 이처럼 for문을 돌릴때 enumerate()를 이용해서 index를 받아올 수 있고, 이를 다양한 방식으로 활용할 수 있다. f-string 알고 있는 개념이지만 너무 자주 쓰이기 때문에 정리하였다. 아래의 예시처럼 문자열 안에 변수를 넣고 싶을 때 사용하면 된..
- Total
- Today
- Yesterday
- til
- Python
- 백준
- 2903
- Wil
- 26069
- MySQL
- 항해 플러스
- 24313
- SQL
- 1269
- 25501
- 5597
- 13241
- 2587
- 2738
- 25192
- programmer
- 코육대
- 4134
- 20920
- 항해+
- 2053
- 17103
- 10807
- 24060
- 24723
- Programmers
- 벡준
- 13909
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |