본문 바로가기
300x250

전체 글94

[Google Adsense] 구글 애드센스 승인! 티스토리 연동하다 오늘 아침에 메일이 하나 왔는데, 기쁜 소식이 있었다. 바로 지난 번 신청해두었던 구글 애드센스가 승인되었다는 것! 메일 제목은 "이제 사이트에 애드센스 광고를 게재할 수 있습니다"이다. 이제 티스토리의 관리 페이지에서 구글 애드센스를 연동해주어야 한다. 관리 페이지의 왼쪽 "수익"을 클릭하면 여러 광고 플랫폼이 기재되어 있는데, 그 중 Google Adsense의 연동하기 버튼을 눌러주었다. 구글 계정에 로그인하고, 티스토리에게 접근 권한을 주겠냐는 의미의 확인 창이 하나 뜨는데 "계속"을 눌러주었다. 이 때, 꼭 구글 애드센스 승인을 요청했던 그 구글 계정으로 로그인을 해야 한다. 즉, 이메일을 받은 메일로 로그인해준다. 빠르게 잘 연동된 것을 확인할 수 있다. 이제 막 게재했기 때문에 노출도, 클릭.. 2023. 2. 26.
[코딩테스트] 다이나믹 프로그래밍 다이나믹 프로그래밍이란? 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법. 이미 계산된 결과는 별도의 메모리 영역에 저장해두었다가, 나중에 해당 결과가 필요할 때 메모리 영역에 기록되어 있는 정보를 그대로 사용하고, 다시 계산하지 않도록 한다. 한 번 해결한 문제는 다시 계산하지 않으므로, 완전탐색을 이용했을 때 비효율적인 시간복잡도를 가진다 하더라도 다이나믹 프로그래밍으로 시간 복잡도를 줄일 수 있다. 일반적으로 Top-down(하향식) or Bottom-up(상향식) 두 가지 방식으로 구성하여 구현한다. 다이나믹 프로그래밍은 동적 계획법이라고 부른다. 자료구조에서 동적 할당(Dynamic Allocation) : 프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법... 2023. 1. 26.
[코딩테스트] 이진 탐색 알고리즘 순차 탐색 : 리스트 안에 있는 특정 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색 : 정렬되어 있는 리스트에서, 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법으로 시작점/끝점/중간점을 이용해서 탐색 범위를 명시해주어야 한다. 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾는다면, 1. array = [0,2,4,6,8,10,12,14,16,18] 시작점:array[0]=0, 끝점:array[9]=18, 중간점:array[4]=8(소수점 이하 제거) 찾고자 하는 4가 중간점인 8보다 작다. 그러므로 중간점을 포함하여 오른쪽 부분은 필요가 없으므로 날려보자. 2. array = [0,2,4,6] 시작점:array[0]=0, 끝점:array[3]=6, 중간점:array.. 2023. 1. 25.
[코딩테스트] 정렬 알고리즘 비교 및 기초 예제 앞의 포스팅에서 네 가지의 정렬 알고리즘을 다뤘다. 상세한 내용이 필요하다면 먼저 아래 두 포스팅을 보고 오는 것을 추천한다. 2023.01.24 - [Data Science] - [코딩테스트] 정렬 알고리즘(1) 선택 정렬과 삽입 정렬 2023.01.24 - [Data Science] - [코딩테스트] 정렬 알고리즘(2) 퀵 정렬 계수 정렬 1. 선택 정렬 평균 시간 복잡도 O(N²) 공간 복잡도 O(N) 매우 간단하고 구현이 쉽다. 2. 삽입 정렬 평균 시간 복잡도 O(N²) 공간 복잡도 O(N) 일반적으로 선택정렬보다 좀 더 빠르다. 데이터가 거의 정렬되어 있다면 O(N)으로 가장 빠르다. 3. 퀵 정렬 평균 시간 복잡도 O(NlogN) 공간 복잡도 O(N) 대부분 가장 적합하며, 충분히 빠르다. .. 2023. 1. 25.
[코딩테스트] 정렬 알고리즘(2) 퀵 정렬 계수 정렬 퀵 정렬 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾼다. 일반적인 상황에서 가장 많이 사용되는 정렬 알고리즘이며, 병합 정렬과 더불어 대부분 프로그래밍 언어 정렬 라이브러리의 근간이 된다. 가장 기본적인 퀵 정렬은 첫 번째 데이터를 기준 데이터(Pivot)로 설정한다. 1. array = [5,7,9,0,3,1,6,2,4,8] 이라고 할 때, 피벗의 값은 5로 선택한다. 2. 왼쪽에서부터 5보다 큰 데이터인 7이 선택되고, 오른쪽에서부터 5보다 작은 데이터인 4가 선택된다. 이 두 데이터의 위치를 서로 변경해준다. 3. array=[5,4,9,0,3,1,6,2,7,8]인 상태에서, 왼쪽에서부터 5보다 큰 데이터인 9가 선택되고, 오른쪽에서부터 5보다 작은 데이터인 2가 선택.. 2023. 1. 24.
[코딩테스트] 정렬 알고리즘(1) 선택 정렬과 삽입 정렬 정렬(sorting) : 데이터를 특정 기준에 따라 순서대로 나열하는 것. 문제 상황에 따라 적절한 정렬 알고리즘을 공식처럼 쓰자. 사람이 보기에는 바로 정렬 결과를 알아볼 수 있겠지만, 컴퓨터는 구체적으로 어떠한 방식으로 정렬을 수행할지 코드를 짜줘야 한다. 선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복한다. 0~9까지 10개의 카드가 랜덤하게 놓여있다고 가정해보자. 1. 처리되지 않은 데이터 중 가장 작은 0을 선택해, 첫 번째 위치의 숫자와 서로 위치를 바꾼다. 2. 남은 9개의 카드 중에서 가장 작은 숫자인 1을 선택해, 두 번째 위치의 숫자와 서로 위치를 바꾼다. 3. 정렬되지 않은 데이터가 1개 남았을 때에는 앞쪽으로 보내봤자 자기 .. 2023. 1. 24.
[코딩테스트] DFS BFS 문제 풀이 실습 문제 1. 음료수 얼려 먹기 N x M 크기의 얼음 틀에서 구멍은 0, 칸막이는 1로 표시된다. 구멍이 뚫려 있는 부분(0)끼리 상하좌우로 붙어있는 경우, 서로 연결되어 있는 것으로 간주한다. 얼음 틀의 모양이 주어졌을 때, 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. EX) 아래 예시에서는 아이스크림이 3개 생성된다. 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 입력 조건 - 첫 번째 줄에 얼음틀의 세로길이 n, 가로길이 m이 주어지며, 1 2023. 1. 24.
[코딩 테스트] DFS BFS 개념 - 스택 큐 자료구조 재귀함수 기초 DFS BFS란, 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 탐색(Search)이라고 하며, DFS와 BFS는 대표적인 그래프 탐색 알고리즘이다. 코딩테스트에서 매우 자주 등장하는 유형이다. 스택 자료구조 먼저 들어온 데이터가 나중에 나가는 형식(선입후출, LIFO - last in first out)의 자료구조. 입구와 출구가 동일하다. 박스 쌓기 예제를 생각하면 된다. 삽입과 삭제, 두 가지가 있다. 파이썬에서는 리스트의 append와 pop을 이용해서, 스택을 구현할 수 있다. append : 우측에 데이터 붙임 pop : 우측의 데이터 삭제 print(list명[::-1]) 하면 최상단 원소부터 출력 가능하다.(리스트를 거꾸로 출력하는 것) 큐 자료구조 먼저 들어온 데이터가 먼저 나가는.. 2023. 1. 23.
[코딩테스트] 구현, 시뮬레이션과 완전 탐색 코딩테스트에서 말하는 구현 문제라는 것은, 풀이(알고리즘)를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제다. -알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 -실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 -문자열을 특정 기준에 따라 끊어 처리하는 문제 -적절한 라이브러리를 찾아서 사용해야 하는 문제 ( 순열, 조합을 예로 들면 itertools를 사용해서 대응 가능하지만 이를 모르면 방대하게 구현해야 함) 2차원 공간, 행렬(Matrix)에서의 방향 벡터가 자주 활용된다. #동,북,서,남 : 방향성을 명시해주기 위해서 리스트나 배열 형태로 나타낸다. dx= [0,-1,0,1]#행 dy= [1,0,-1,0]#열 #현재 위치 x,y = 2,2 for i in range(4) .. 2022. 12. 24.