분류 전체보기 229

알고리즘 더 풀어보기 (1)

[곱하기 or 더하기] 문제) 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오. 단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다. 무조건 곱하기만 한다고 커지지 않음! - 0과 곱하게 되면 값이 0이 나옴 : 더하는게 나음 - 1과 곱하게 되면 값이 커지지 않고 그대로임 : 더하는게 나음 ∴ 계산하려는 값이 1 이하일 경우 더하기 앞숫자 + 뒤숫자

알고리즘 2021.08.17

점근 표기법

[점근 표기법이란?] 알고리즘의 성능을 수학적으로 표기하는 방법. "효율성"을 평가하는 방법 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현하는 수론과 해석학의 방법 지금까지 "~시간과 공간이 걸리겠구나" 하면서 따졌던 것들이 점근표기법의 일종임 [점근 표기법의 종류] 1. 빅오(BIg-O) 표기법 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지에 대해 표기 표기 방법 예시: O(N) 2. 빅 오메가(Big-Ω) 표기법 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지에 대해 표기 표기 방법 예시: Ω(1) [배열에서 특정 요소 찾기] 다음과 같은 숫자로 이루어진 배열이 있을 때, 이 배열 내에 특정 숫자가 존재한다면 True, 존재하지 않다면 False를 반환하시오. [3, 5, 6..

알고리즘 2021.08.15

공간 복잡도 판단하기

[공간 복잡도란?] 입력값과 문제를 해결하는 데 걸리는 공간과의 상관관계 (공간은 변수나 배열 등 값을 담을 때 쓰이는 것들을 말함) "우리는 공간이 적게 걸리는 알고리즘을 좋아하니 입력값이 늘어나도 걸리는 공간이 덜 늘어나는 알고리즘이 좋은 알고리즘이겠죠?" [최빈값 찾기 알고리즘의 공간 복잡도 판단해보기] 방법1) 각 알파벳마다 문자열들을 돌면서 몇 글자가 나왔는 지 확인 만약 그 숫자가 저장한 알파벳 빈도 수보다 크면, 그 값을 저장하고 제일 큰 알파벳으로 저장. def find_max_occurred_alphabet(string): # alphabet_array: 26 개의 공간을 사용합니다 alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "..

알고리즘 2021.08.13

시간 복잡도 판단하기

[시간 복잡도란?] 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계 (입력값이 증가할 때 걸리는 시간은 얼마나 증가하는 지 판단하는 것 입력값이 많아졌을 때 데이터를 처리하는 데 오래걸리면 효율이 좋지 않은 코드라는 것이므로 입력값이 많을 때 시간이 비교적 오래 걸리지 않으면 좋은 코드) [최댓값 찾기 알고리즘의 시간 복잡도 판단해보기] 방법 1) 각 숫자마다 모든 다른 숫자와 비교해서 최대값인지 확인 만약 다른 모든 값보다 크다면 반복문을 중단 input = [3, 5, 6, 1, 2, 4] def find_max_num(array): for num in array: # array 의 길이만큼 아래 연산이 실행 for compare_num in array: # array 의 길이만큼 아래 연산이 ..

알고리즘 2021.08.11

알고리즘과 친해지기 - 최빈값 찾기

문제 설명) 다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오 "hello my name is sparta" 힌트) 1) str.isalpha() : 문자가 알파벳인지 아닌지 반환하는 함수. return True or False print("a".isalpha()) # True print("1".isalpha()) # False s = "abcdefg" print(s[0].isalpha()) # True 2) 알파벳 별로 빈도수를 리스트에 저장하기 길이가 26이고 0으로 초기화된 배열을 선언한 후, 이 배열의 각 원소에 알파벳마다 빈도수를 추가 ex) 알파벳을 순서대로 나열했을 때 a는 첫번째로 등장함 컴퓨터언어에서는 시작이 1이아닌 0이기 때문에 a의 위치는 0 ..

알고리즘 2021.08.10

알고리즘과 친해지기 - 최대값 찾기

[알고리즘이란?] 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전] -> 어떤 문제가 있을 때, 그것을 해결하기 위한 여러 동작들의 모임 하나의 문제를 풀기 위해서는 다양한 방법이 있을 수 있다 [최댓값 찾기] 다음과 같이 숫자로 이루어진 배열이 있을 때, 이 배열 내에서 가장 큰 수를 반환하시오. 방법 1) 각 숫자마다 모든 다른 숫자와 비교해서 최대값인지 확인한다. 만약 다른 모든 값보다 크면 반복문을 중단한다. ex) [3, 5, 6, 1, 2, 4] 3 VS 3, 5, 6, 1, 2, 4 -> 3 vs 3, 3 vs 5, 3 vs 6, ....

알고리즘 2021.08.09

검색엔진 최적화(SEO)

- SEO(Search Engine Optimization) 검색엔진에 검색이 더 잘 되도록 최적화하는 것 - 검색엔진 최적화 1. 내부 요소 최적화 HTML 태그, 페이지 안의 컨텐츠, 메타태그 등을 최적화하는 과정 2. 외부 요소 최적화(백링크 개수 등) 백링크: 자신의 사이트를 다른 사이트에서 링크를 걸어 언급하는 것 백링크의 갯수와 링크를 건 사이트가 얼마나 신뢰도가 있는지 등을 고려해서 점수가 계산됨 - 네이버 SearchAdvisor 사이트 진단 https://searchadvisor.naver.com/diagnose 진단하기 - 네이버 서치어드바이저 여러분의 웹사이트는 검색친화적인가요? 웹마스터도구는 여러분의 사이트가 검색엔진에 친화적인지 진단하고 문제점을 알려줍니다. 네이버 검색결과에 웹사..

기록 2021.08.07

네이버에서 내 사이트 검색되게 하기

[네이버 검색에 나오려면?] 1st. 네이버 웹마스터 도구에 내 사이트 등록 2nd. 검색 관련 문서 제출 - 네이버 웹마스터 도구 네이버 검색이 되도록 유저가 직접 사이트를 등록할 수 있게 해주는 것 - 검색엔진의 원리 크롤러 검색봇(네이버는 Yeti)이 인터넷을 돌아다니면서 사이트 정보를 수집해 네이버에 저장해두고 네이버에서 쉽게 사이트를 검색하게 해줌 하지만 크롤러가 아무 사이트 다 정보를 긁어오면 숨기고싶은 사이트인 경우 곤란하게 됨 그래서 robot.txt 문서를 규정해 놓아 크롤링이 가능한지에 대한 규칙을 적어놓음 크롤러는 가장 먼저 robot.txt를 보고 크롤링이 가능하다 하면 크롤링을 함 결론은 네이버에서 검색이 되도록 하려면 robot.txt와 크롤러가 사이트를 더 쉽게 탐색할 수 있게..

기록 2021.08.07

광고 붙이기

[광고 붙이는 방법] 1. 애드 네트워크(Google Adsense, Kakao Adfit, ...) 2. 직접 광고 계약 1. 애드 네트워크 광고를 하고 싶어하는 회사들의 광고를 애드 네트워크가 받아서 웹/앱 서비스를 만드는 사람들에게 코드를 제공해 손쉽게 광고를 달 수 있음 - 애드 네트워크의 장점 회사들과 직접 광고 계약을 맺지 않아도 손쉽게 광고를 붙일 수 있음 광고에 대한 통계도 볼 수 있음 로그인 후 '광고관리' -> '새 매체' 클릭해서 입력하라는 것을 입력하면 스크립트가 나타나게 되는데, 그 스크립트를 코드의 원하는 위치에 넣어주기 로컬에서 코드를 실행해서 띄우면 광고 배너가 안 보일것임. 광고 등록 시 입력했던 주소와 다르기 때문 입력했던 주소에 스크립트를 넣어줘야 광고가 보임 광고 배너..

기록 2021.08.07