목록분류 전체보기 (184)
이숭간 공부기록
대표적 그래프탐색 알고리즘 : DFS / BFS 탐색이란, 많은 양의 데이터중 원하는 데이터를 찾는 과정 _ 파이썬에서는 간단히 리스트로 스택 구현 가능 DFS : 깊이우선 탐색으로 가장 깊은곳까지 먼저 탐색하는 방식 DFS는 스택자료구조(혹은 재귀함수)를 이용한다. 1. 시작노드를 스택에 삽입 / 방문처리 2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리한다. 방문하지 않은 인접노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 더이상 2번의 과정을 수행할 수 없을때까지 반복한다. 너비우선탐색으로 그래프에서 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. BFS는 큐를 이용한다. 1. 탐색 시작노..
출제경향 : 그리디 / 구현 / BFS, DFS 가 가장 많이 출제됨 파이썬 - 대체로 1초에 2천만번정도의 연산을 할수있다고 가정하고 접근 지수표현방식 : 1e9 = 10의 9제곱을 의미한다 / 임의의 큰 수를 표현하기위해 자주 사용됨 /ex) 최단경로 알고리즘에서 도달할수 없는 노드에 대해 최단거리를 무한으로 설정할때 list 직접 데이터를 넣어 초기화할수도 있고 크기가N이고 모든값이 0인 리스트 초기화 : a = [0]*n 인덱싱 슬라이싱 : 연속적인 위치를 갖는 원소들을 가져올때 - 끝인덱스는 +1 컴프리헨션 : 대괄호안에 조건문과 반복문을 적용해 리스트를 초기화 할수 있음 array = [i for i in range(10)] array = [i for i in range(10) if i%2 =..
구현 : 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 / 문제에서 요구하것이 구현에 맞춰져 있는문제들 즉 풀이를 떠올리는것은 쉽지만 소스코드로 옮기기 어려운 문제를 말함 예를들면 알고리즘은 간단한데 코드가 지나치게 길어지는문제 실수연산, 특정소수점자리까지 출력해야하는 문제 문자열을 특정한 기준에 따라 끊어 처리해야 하는 문제 ( 문자열처리는 파이썬이 강력함 ) 적절한 라이브러리를 찾아 사용해야 하는 문제 예제문제 1 ) 상하좌우 이동시키기 내가 작성한 코드 n = int(input()) plan = list(input().split()) row = 1 line = 1 for move in plan: if move == 'R': if line == n: continue line +=1 elif move..
그리디 알고리즘란, 현재상황에서 지금 당장 좋은것만 고르는 방법을 의미한다. 즉 단순히 가장 좋아보이는것을 반복적으로 선택해도 최적의 해을 구할수 있는지 검토하는것이 중요하다. 예제문제1) 거스름돈문제 _ 가장 적은 개수의 돈으로 거스름돈을 줄수있는 방법은? 거스름돈 문제를 그리디해법으로 풀었을때(가장 큰 화폐단위부터 돈을 거슬러주는것)이 최적의 해를 보장하는 이유는? 가지고 있는 동전 중 큰 단위가 항상 작은 단위의 배수이므로 작은단위의 동전들을 종합해 다른 해가 나올 수 없기 때문 만약 800원을 거슬러 주어야 하는데 화폐단위가 500, 400, 100원이라면 이때는 그리디해법을 적용할 수 없다 예제문제2) 1이 될때까지 정당성분석 : K가 2이상이기만 하면, K로 나누는것이 1을 빼는것보다 항상 빠..
두가지 방법이 있는데 java.lang.Thread를 직접 객체화해서 생성하거나 스레드 클래스를 상속해서 하위클래스를 만드는 방법이 있습니다. 첫번째의 경우 Runnable을 매개변수로 갖는 생성자를 호출해서 스레드 객체를 생성하는데, 이때 Runnable은 run이라는 함수를 정의하고있는 인터페이스입니다. Runnable구현 클래스에서 run함수안에 스레드가 실행할 코드를 작성하고 이 클래스로 객체를 생성하고 스레드클래스의 생성자에 매개변수로 전달합니다. 코드를 절약하기 위해서는 Runnabel 익명객체를 매개값으로 사용할 수 있습니다. 그후 start메소드를 호출해서 작업스레드를 실행합니다.
프로그램이 실행되면 프로세스의 형태로 메모리에 로드되고 이를 cpu가 실행함 프로그램의 구동을 위해서는 운영체제가 메모레 (RAM)에 공간을 할당하고 이 공간에 프로세스가 로드되어 프로그램이 실행됨 메모리공간은 크게 1. 스태틱영역 2. 스택영역 3. 힙 영역 으로 나뉘고 데이터 타입에 따라서 해당공간에 할당됨 // 먼저 잠깐 변수정리! 선언위치에 따른 분류 - 멤버변수 / 지역변수 멤버변수 : 클래스변수(인스턴수 변수앞에 static,) + 인스턴스변수( 필드내에 선언, 인스턴스 생성시 만들어짐 ) 지역변수 : 메소드 내에서 선언되는 변수 데이터 타입에따른 분류 - 기본형변수 / 참조변수 기본형변수 : 자료의 실제값을 저장 ( 8개 타입 ) 참조변수 : 값이 저장되어있는 주소값을 갖는다 ( string..