본문 바로가기

전체 글

(20)
최솟값 찾기 (백준 11003) 문제 링크 : https://www.acmicpc.net/problem/11003 문제 분석1. 정렬을 이용한 문제해결 일정 범위 안에서 최소값을 구하는 문제이므로 "슬라이딩 윈도우" 방식과 "정렬"을 통해 답을 추리면 결과를 얻을 수 있으나, 정렬 알고리즘의 시간 복잡도는 O(nlogn) 이므로 문제에 효율적이지 못하다.  ( 문제 상황에서 시간 복잡도는  O(nlogn) 정렬 알고리즘을 포함하면 O((N-L+1) * L log L) 이 되는데 이는 모든 슬라이드에서 정렬을 하여 답을 구하는 경우이다. 따라서, 이 문제를 효율적으로 해결하기 위해서는 정렬을 사용하지 않고, 덱(deque)과 같은 자료구조를 활용하여 O(N)의 시간 복잡도로 해결하는 방법이 좋다.)정렬 알고리즘 중 비교 기반 정렬 알고리..
좋다(백준 1253) 문제N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다.N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라.수의 위치가 다르면 값이 같아도 다른 수이다.입력첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 $A_i$가 N개 주어진다. (|$A_i$| ≤ 1,000,000,000,$A_i$는 정수)출력좋은 수의 개수를 첫 번째 줄에 출력한다. 입출력101 2 3 4 5 6 7 8 9 108 입출력3,4,5,6,7,8,9,10은 좋다.초기 코드 N = int(input()) # 개수L = list(map(int, input().split())) # 숫자 리스트count = 0 # 좋은 수L.s..
나머지 합 구하기(백준 10986) 문제수 N개 $A_1, A_2, ..., A_N이$ 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오.즉, $A_i + ... + A_j (i ≤ j)$ 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. 입력첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ $10^6$, 2 ≤ M ≤ $10^3$)둘째 줄에 N개의 수 $A_1, A_2, ..., A_N$이 주어진다. (0 ≤ $A_i$ ≤ $10^9$) 출력첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다. 입출력5 31 2 3 1 27 💡 문제 상황 이해하기 입력 5 3- 5 : 수의 개수- 3 : 3 으로 나누어 떨어지는 구간이 있는지입력..
빅오 표기법(big-O notation) 정복하기 # 1. 빅오 표기법이란? 빅오 표기법(Big-O Notation)은 알고리즘의 실행 시간 복잡도를 분석하는 수학적 표기법으로,input의 크기가 무한하게 증가할 때 실행 시간을 나타내는데 사용됩니다.즉, 알고리즘 성능평가를 위한 강력한 도구가 빅오 표기법입니다. Big-O 표기 방법 : O(n) 이때 괄호 안의 값은 입력 데이터의 크기에 대한 함수로, 알고리즘의 시간 복잡도 또는 공간 복잡도를 나타냅니다.ex) O(1), O(n), O(log n) ...    #2. 간단한 예시로 알아보자def get_first_element(inputs): return inputs[0] 간단한 예시로 위와 같이 List를 input으로 받아오는 함수가 있다고 가정해봅니다.여기서 함수는 "2번"의 연산이 있게 되..
[GIt] The requested URL returned error: 403 !git pushremote: Permission to rotimeh24k/coding-test.git denied to rohhail.fatal: unable to access 'https://github.com/rotimeh24k/coding-test.git/': The requested URL returned error: 403 github 원격 repository에 push를 하였지만 권한 문제로 인한 error가 발생하였다.이를 해결하기 위해서는 github에서 token을 발급받아 인증을 하면 된다.  1. generate token 1. 깃허브 우측 위 프로필을 클릭하여 Settings 클릭 2. 메뉴의 맨 하단 Developer settings 클릭3. 메뉴의 Tokens 클릭  4. 우측..
생물학적 뉴런과 인공 신경망 Neuron(신경세포)  인공신경망을 이해하는 첫 단계는 사람의 뇌를 아는 것입니다. 사람의 뇌는 약 1000억 개의 neuron(뉴런)으로 구성되어 있으며, neuron(뉴런)은 신경계와 신경조직을 이루는 기본단위입니다. neuron(뉴런)은 일반 세포와 달리 크고 비대칭적이며 수많은 돌기로 이루어져 있습니다. 1000억 개의 neuron이 뇌에서 하는 일은, 쉴 새 없이 흥분시키는 것인데요. neuron의 동작 방식을 자세히 알아봅시다. 1. 뉴런의 동작 방식    뉴런은 양쪽 끝에 나와있는 돌기들을 통해 흥분 신호를 주고받습니다.Dendrites(가지돌기)(=수상돌기)는 input(입력)을 담당하고, Axon(축삭돌기)는 output(출력)을 담당합니다. Dendrites(가지돌기)로 들어온 입력은..
Transformer (Multi-head Attention) Transformer의 Attention은 모두 Multi-head attention이 쓰였습니다. 트랜스포머 연구진은 한 번의 어텐션을 하는 것보다 여러번의 어텐션을 병렬로 사용하는 것이 더 효과적이라고 판단하였는데요. 한번 살펴봅시다. Multi-head AttentionSelf-Attention의 모델을 먼저 살펴봅시다. Self-Attention 모델Self-Attention에서는 하나의 Sequence에 각각 하나씩의 Query, Key, Value값을 구하고, Attention을 수행하였습니다. Multi-head Attention에서는 여러번의 어텐션을 병렬로 사용하는데요. Multi-head Attention 모델 Multi-head Attention을 보시면 여러번의 어텐션이 병렬로 연상..
Transformer (Self-Attention) 1편과 이어서 Transformer에 대해서 설명드리겠습니다. 이전에 Transformer의 구조를 한번더 복습하고 진행하겠습니다. 1. Transformer의 structure 보기  input Embedding과 Positional Encoding 층을 지나면 Attention을 만나볼 수 있는데요. 트랜스포머의 인코더와 디코더에서 사용하고 있는 개념인 어텐션에 대해서 알아보겠습니다. (Attention의 등장 배경과 짧은 설명은 transformer 1편에 설명되어 있습니다.)2. 트랜스포머에서 사용된 Attention 트랜스포머는 총 세 가지의 어텐션이 사용되는데요, 세가지 어텐션에 대해서 간단히 정리해 보면 아래와 같습니다. Encoder Self-Attentiondecoder Masked Se..