본문 바로가기

algorithm10

Algorithm 공부하다 알게된 내용 1. 입력할 때 a, b =input().split() : 공백을 기준으로 입력된 값들을 나누어 자른다. n = ord(input()) : 입력받은 문자를 10진수 유니코드 값으로 변환한 후, n에 저장한다. ord() : 어떤 문자의 순서 위치 값을 의미한다. ord(c) : 문자 c를 10진수로 변환한 값 chr() : 정수값 -> 문자 ord() : 문자 -> 정수값 a = bool(int(input())) : 한 단계씩 계산/처리/평가 xor a, b = input().split() c = bool(int(a)) d = bool(int(b)) print((c and (not d)) or ((not c) and d)) 숫자인지 판단할 때 변수.isdigit() 16 진수 입력 하기 n = int(i.. 2021. 10. 26.
알고리즘 공부 방법 1. 시작할 때 (언어를 선택하라) 언어를 선택한 후, codeup에서 기초 100문제를 풀어야 한다. codeup 2. 백준 문제를 푼다. 1) 그리디 알고리즘 문제를 푼다. 쉬운 난이도와 문제들 중에서 그리디 알고리즘 유형이 많이 출제 된다. 2) 탐색 문제를 푼다. 완전 탐색, BFS, DFS를 공부하면 된다. 3) 기초 동적 프로그래밍 푼다. 1), 2), 3)를 50문제씩 백준에서 푼다. 3. 프로그래머스 기출문제를 푼다. 1) kakao 2) 삼성역량테스트 코드포스 블루레벨 정도면 코딩테스트 합격 가능하다. 또는, 삼성 역량 테스트 B형으로 정도면 합격 가능하다. 참고자료 https://youtu.be/ukkLCl9yBvE 2021. 10. 11.
알고리즘 풀 때, 주의할 점 Algorithm 풀 때 주의할 점 1. 문제에서 제시 된 행렬을 잘 판단 해야한다. 좌표가 m = 4, n = 3인 격자모양이 있을 때 행 : n, 열 : m이다. 이때, 잠긴 지역의 좌표를 담은 2차원 배열 puddles가 있을 때 puddles[i][j] i 는 열이다. j 는 행이다. 행렬 판단을 잘 해야 한다. 참고 자료 코딩테스트 연습 - 등굣길 | 프로그래머스 (programmers.co.kr) 2021. 8. 19.
Dijkstra 알고리즘이란 무엇인가? 다익스트라 알고리즘(Dijkstra Algorithm) 다익스트라 알고리즘 : 하나의 정점에서 다른 모든 정점들의 최단 경로를 구한다. 다익스트라 알고리즘의 기본 로직 : 첫 정점을 기준으로 연결되어 있는 정점들을 추가해가며, 최단 거리를 갱신하는 것이다. 정점을 잇기 전까지는 시작점을 제외한 정점들은 모두 무한 대 값을 가진다. 1. 다익스트라 알고리즘 기본 로직 시작점 : 5번 정점 5번 노드를 제외한 나머지 정점들이 가지는 최단 경로는 아직 연결되지 않았으므로 무한대이다. 1) 경로가 가장 짧은 정점을 고른다. 시작 점, 5번 노드와 연결되어 있는 노드는 2, 4번 노드이다. 2번 노드 dist[2] = min(dist[2], dist[5] + adj[5][2]) min(INF, 4) = 4 4번 .. 2021. 8. 15.
Priority Queue Priority_Queue 1. Priority_Queue란 무엇인가? Priority_Queue는 Queue의 한 종류로 우선순위에 따라 정렬된 Queue이다. 어떤 원소가 삽입되면 주어진 우선순위에 맞춰서 Queue가 정렬되고, 삭제는 정렬된 Queue의 앞에서 이루어진다. Heap로 구현되었기 때문에, O(log) 시간복잡도 2. priority_queue container 생성자와 연산자 template class priority_queue;** 기본 생성자 형식 priority_queue [변수이름]; ex) priority_queue pq; 내.. 2021. 8. 4.
vector vector 1) 정의 사이즈가 유동적인 배열 2) 용도 배열을 사용하는 모든 경우 3) 사용법 v.size(); // v의 사이즈 v.resize(new_size); // v를 new_size로 사이즈를 바꿔준다. v.empty(); // v의 사이즈가 0인지 아닌지를 확인 v.begin(); // v의 마지막 원소를 가리키는 iterator 리턴 v.end(); // v의 마지막 원소를 가리키는 iterator 리턴 v.front(); // v의 0번째 원소를 리턴 v.back(); // v의 마지막 원소를 리턴 v.push_back(val); // v의 끝에 val을 추가 v.pop_back(); // v의 마지막 원소를 삭제 v.clear(); // v의 모든 원소를 삭제 에 있는 reverse(.. 2021. 8. 4.