728x90
반응형
SMALL
알고리즘이란
- 유한한 단계를 통해 문제를 해결하기 위한 절차나 방법
슈도코드 : 일반적인 언어로 코드를 흉내내어 알고리즘을 써 놓은 코드 (실행 불가)
순서도 : 프로그램이나 작업의 진행 흐름을 순서에 따라 여러가지 시호나 문자로 나타낸 도표
성능 <- 무엇이 좋은 알고리즘인지를 평가하는 척도
- 정확성 : 정확한가
- 작업량 : 적은 연산으로 원하는 결과를 얻어내는가
- 메모리 사용량 : 얼마나 적은 메모리 사용하는가
- 단순성 : 얼마나 단순한가
- 최적성 : 더 이상 개선할 여지 없이 최적화되어있는가
시간복잡도(빅오 표기법) + 실행 되는 명령문의 개수 계산 등등 또한 포함된다.
파이썬 자료형
- tuple = (), 순서 O, 중복 O, 데이터 변경 X
- list = [], 순서 O, 중복 O, 데이터 변경 O
- dictionary = {} 순서 X, (키 중복X 값 중복 O), 데이터 변경 O
- set = {} 순서 X, 중복 X, 데이터 변경 O
리스트 함축 (LIst Comprehension)
- 수학에서 집합을 정의하는 표현식과 유사함
완전검색 방법 => (Brute-force)
- 모든 경우의 수를 테스트 하고 최종 해법을 도출하기 때문에 속도는 느리지만 해답을 찾지 못할 경우가 적음
- Permutation : 순열로 서로다른 몇개를 뽑아서 한 줄로 나열한 것
탐욕 알고리즘 => Greedy
- 여러 경우중 하나를 선택할 때 마다 그 순간에 최선이라고 생각하는 것을 지속적으로 선택하는 방식
정렬
- 버블 정렬
- 카운팅 정렬
- 선택 정렬
- 퀵 정렬
- 삽입 정렬
등등이 있음 [관련 내용들을 정리할때마다 추가할 예정]
6차시 1일차 - min max (해답코드)
- 본인은 정렬을 사용하여 문제 해결
N = int(input())
answer = []
for _ in range(N):
n = int(input())
li = list(map(int, input().split()))
li.sort()
answer.append((li[len(li)-1] - li[0]))
for i in range(len(answer)):
print("#",i+1, sep = "", end = " ")
print(answer[i])
7차시 1일차 - 전기버스 (해답코드)
T = int(input())
t = 1
while T-t >= 0:
K, N, M = map(int, input().split())
bus = [0 for _ in range(N+1)]
m = list(map(int, input().split()))
for i in m:
bus[i] = 1
now = 0
nowK = 0 + K
cnt = 0
while nowK < N:
if now == nowK:
cnt = 0
break
if bus[nowK] == 1:
now = nowK
nowK = now + K
cnt += 1
elif bus[nowK] == 0:
nowK -= 1
print("#"+str(t), cnt)
t += 1
8차시 1일차 - 숫자카드 (해답코드)
N = int(input())
answer = [0] * 10
pr = []
for _ in range(N):
n = input()
s1 = input()
for i in s1:
answer[int(i)] += 1
index = 0
max = 0
for i in range(len(answer)):
if(max <= answer[i]):
index = i
max = answer[i]
pr.append([index, max])
answer = [0] * 10
for i in range(len(pr)):
print("#",i+1, sep = "", end = " ")
print(pr[i][0], pr[i][1], sep=" ")
9차시 1일차 - 구간합 (해답코드)
TC=int(input())
answer = []
for i in range(1,TC+1):
N,M=map(int,input().split())
arr=list(map(int,input().split()))
arr_list = []
for i in range(N-M+1):
su = 0
for j in range(i,i+M):
su += arr[j]
arr_list.append(su)
answer.append(max(arr_list) - min(arr_list))
for i in range(len(answer)):
print("#",i+1, sep = "", end = " ")
print(answer[i])
[해당 블로그 글은 *SW Expert Academy* 에서 Course -> programming Intermediate에 있는 강의와 문제를 보고 정리 밑 문제풀이 한것으로 해당 문제 나 강의를 보기 위해서는 https://swexpertacademy.com 로 방문하여 회원가입 후 보실 수 있습니다.]
728x90
반응형
LIST