[데이터 분석] 데이터 분석 기초 개념
·
데이터 분석
- csv.reader(): CSV 파일에서 데이터를 읽어오는 함수 - csv.writer(): CSV 파일에 데이터를 저장하는 함수 전체 데이터 출력 import csv #csv 모듈을 불러옴 f = open('jinju.csv', 'r', encoding='cp949') #csv파일을 open()함수로 열어서 f(파일 핸들러라고도 부름)에 저장 data = csv.reader(f, delimiter=',') #f를 reader()함수에 넣어 data라는 CSV reader 객체를 생성 print(data) f.close() #2에서 연 파일을 닫음 · encoding='cp949' : cp949라는 형식 (windows 한글 인코딩 방식)으로 읽어오라는 의미 · csv.reader(f, delimit..
DFS/BFS 탐색 알고리즘
·
자료구조 | 알고리즘
그래프 그래프는 노드(정점)와 간선으로 표현됨. 그래프 탐색: 하나의 노드를 시작으로 다수의 노드를 방문하는 것 그래프의 표현 방식 1. 인접 행렬 - 2차원 배열로 그래프의 연결 관계를 표현하는 방식 - 2차월 배열에 각 노드가 연결된 형태를 기록하는 방식 - 파이썬에서는 2차원 리스트로 구현 가능 - 연결 되어 있지 않은 노드끼리는 무한의 비용이라고 작성 인접 행렬 방식 예제 INF = 999999999 #무한의 비용 선언 #2차원 리스트를 이용해 인접 행렬 표현 graph = [ [0, 7, 5], [7, 0, INF], [5, INF, 0] ] print(graph) #[[0, 7, 5], [7, 0, 999999999], [5, 999999999, 0]] 2. 인접 리스트 - 리스트로 그래프의 ..
[자료구조] 리스트(List) vs 배열(Array) 특징과 차이
·
자료구조 | 알고리즘
배열(Array) 고정된 크기를 갖는 같은 자료형의 원소들이 연속적인(논리적 저장 순서와 물리적 저장 순서가 일치) 형태로 구성된 자료구조 인덱스에 따라 값을 유지하므로 원소가 삭제되어도 빈자리가 남게되어 메모리가 낭비된다. 처음 크기를 10으로 지정한다면 5개의 데이터만 저장하더라도 실제 배열의 크기는 10이다. 데이터 갯수가 확실하게 정해져 있고, 접근이 빈번한 경우 배열이 효율적이다. cache hit 가능성이 커져 성능에 큰 도움이 된다. cache hit : CPU가 참조하고자 하는 메모리가 캐시에 존재하고 있는 경우 고정이고 연속적인 만큼 인덱스로 random access가 가능하다. 접근, 수정 O(1)으로 빠르게 조회가 가능하다. 하지만 삽입과 삭제의 경우 연속적인 형태 유지를 위해 shi..
스택, 큐 알고리즘
·
자료구조 | 알고리즘
탐색 - 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 대표적인 탐색 알고리즘: DFS/BFS 자료구조 - 데이터를 표현 ·관리 · 처리하기 위한 구조 스택과 큐는 자료구조의 기초 개념으로 삽입과 삭제 함수로 구성됨. 실제로 스택과 큐를 사용할 때는 삽입과 삭제 외에도 오버플로와 언더플로를 고민해야 함. 스택 - 스택은 후입선출구조이다. - 입구와 출구가 동일한 형태로 스택을 시각화 할 수 있다. stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1) stack.append(4) stack.pop() print(stack) #[5,2,3,1] 큐 - 큐는 대기 줄에 비유할..
그리디 Greedy 알고리즘
·
자료구조 | 알고리즘
- 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법 어떠한 문제가 있을 때 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미 - 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로' 와 같은 기준을 제시해준다. - 대부분의 문제는 그리디 알고리즘을 이용했을 때 '최적의 해'를 찾을 수 없을 가능성이 다분함 거스름돈 예제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. n = 1260 coun..
Programmers / 1단계 / 달리기 경주 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 달리기 경주 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순..
Programmers / 1단계 / 개인정보 수집 유효기간 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 (테스트 실패, 정확성 65) def solution(today, terms, privacies): arr = [] dic = {} result = [] for i in terms: arr.append(i.split()) for i in arr: dic[i[0]] = int(i[1]) for i in privacies: year = int(i[0:4]) month = int(i[5:7]) + dic[..
Programmers / 1단계 / 바탕화면 정리 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 ..