DFS와 BFS
DFS와 BFS 그래프를 탐색하기 위한 대표적인 두 가지 알고리즘 DFS(깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 기본적인 코드는 다음과 같다. graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7...
DFS와 BFS 그래프를 탐색하기 위한 대표적인 두 가지 알고리즘 DFS(깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 기본적인 코드는 다음과 같다. graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7...
동적 프로그래밍 학교 알고리즘 수업시간에 배운 동적 계획 알고리즘을 적용해보기 위해서 백준 사이트에 동적 프로그래밍 문제 위주로 풀어보았다. 리스트에서 다음 요소를 어떻게 셋팅할 것인지의 점화식을 세우고 고민하는 과정이 정말 재미있었다. 백준 - 1로 만들기 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨...
수들의 합 아주 간단한 문제인데, 얼마전 피보나치 수열을 비효율적으로 짰던 비슷한 경험이 떠올라서 간단히 정리하기로 했다. 문제 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 입력 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 출력 첫째 줄에 자연수 N의 최댓값을 출력한...
경력 직원 고용하기 구현하는데는 성공했지만, for문을 3개나 들여써서 time limited가 떴다. for문을 3개나 들여써서 어떻게 하면 줄일 수 있을지 많이 고민한 문제이다. 문제 어느 IT 회사에서 경력 직원을 고용하려고 한다. 이 회사에는 모바일 앱 개발, 3D 그래픽스, C/C++, 데이터 베이스, 서버 보안 등 M개의 기술을 필요로 ...
트로미노 타일 이해하는데 너무 오랜 시간이 걸렸다. 두고두고 봐야할 코드인 것 같다. 코드를 뜯어보면서 공부해보자. # 정사각형 영역이 비어있는지 확인하는 함수 def check(x, y, size): for nx in range(x, x + size): for ny in range(y, y + size): ...
분할 정복 알고리즘을 이용하여 최근접점 찾기 구현하기 정말 어려웠던 알고리즘 중 하나였다. 아래의 코드를 뜯어보면서 다시 한 번 공부해보자. import math # 두 점 사이의 거리를 계산하는 함수 def calculate_distance(point1, point2): return ((point1[0] - point2[0]) ** 2 +...
구현 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 이코테에서는 이 유형에서 완전 탐색과 시뮬레이션을 다루고 있는데, 완전 탐색은 모든 경우의 수를 주저 없이 다 계산하는 해결 방법을 의미하고, 시뮬레이션은 알고리즘을 한 단계씩 차례대로 직접 수행해야하는 문제이다. 구현에서는 채점 환경을 고려하는 것이 중요하다. 특히 파이썬은 C/C+...
그리디 알고리즘 당장 좋은 것만 선택하는 알고리즘 그리디 알고리즘은 전체적으로 최적의 해를 보장하지는 못하지만, 그 순간에 대해서는 최적인 알고리즘이다. 따라서 각 단계의 선택이 최종적인 결과에 미치는 영향을 고려하지 않고 진행된다. 실전문제 이코테-그리디 알고리즘에는 3문제가 수록되어있는데 모두 어렵지 않게 해결할 수 있었다. 문제의 목적만 잘...
creat() #include <fcntl.h> int creat(const char *pathname, mode_t mode); // 파일 경로 및 이름, 파일의 권한 예시 #include <stdio.h> #include <fcntl.h> int main(void) { int fd; ...
📋 퀵정렬 알고리즘 def quick_sort(input): if len(input) <= 1: return input # 리스트의 길이가 1 이하면 바로 리턴 pivot = input[0] # 피벗을 리스트의 첫 번째 요소로 선택 left = [] # 피벗보다 작은 값을 담을 리스트 right...
📋File i/o 파일을 열고, 생성하고, 읽고, 쓰고, 닫는 과정 nano openfile.c #include <stdio.h> // 표준 입력 및 출력 함수를 제공 #include <stdlib.h> // 일반적인 유틸리티 함수들을 제공 #include <fcntl.h> // 파일 제어 관련 상수들과 파일 제어...
📋GIT branch 미리해야할 일 git log --all --graph --oneline 모든 branch들을 시각적으로, 한줄로 표현 git branch branch 목록 보여주기 branch 정리 git branch 브랜치이름 현재 버전으로 브랜치 만들기 git check out 브랜치이름 HEAD가 해당 브랜치로 전환하기 ❕bas...
📋GIT 명령어를 복습해보자. 미리해야할 일 git config --global core.editor "nano" 에디터 바꾸기 git init . 현재 디렉토리 버전관리 시작 cd .git repository로 들어가기 git 문법 정리 git status git의 상태를 보여주기 git add 파일이름 파일을 Working...
📋TCP/IP Protocol Suite 인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다. 📌TCP/IP Protocol Suite의 ...
def normalize_data(n_cases, n_people, scale): # Calculate the number of cases per its population norm_cases = [] for idx, n in enumerate(n_cases): norm_cases.append(n_cases[idx]...
#Nice to meet you, #everyone :) 크기0 크기1 크기2 크기3 크기4 크기5 크기6 1층 2층 3층 그냥 텍스트 강조된 텍스트 기울어진 텍스트 강조된&기울어진 텍스트* 취소된 텍스트 밑줄친 텍스트 노란 글씨입니다.