소프트웨어마에스트로와 OpenAI가 주최한 Codex Impact Workshop에서 1등을 수상했습니다. 이번 대회는 “돈이 되는 문제에서, 사회에 필요한 문제로”라는 주제로 진행됐습니다. 기존에는 수익화와 비즈니스 모델을 중심으로 서비스를 고민했다면, 이번에는 그동안 깊게 살펴보지 못했던 사회문제를 소프트웨어로 해결해보는 자리였습니다.1. 시니어를 위한 서비스저는 처음에 부모님이나 조부모님의 이야기를 음성으로 녹음하고, 가족이 오랫동안 간직할 수 있는 서비스를 생각했습니다. 하지만 이번 해커톤에서는 주제에 맞춰 실제 생활에서 반복적으로 불편을 만드는 문제를 찾고 싶었습니다. 여러 아이디어를 이야기하던 중 평소 쌓여 있는 우편물이 떠올랐습니다. 저는 자취하면서 우편함에 우편물이 쌓여 있어도 바로 확인하..
분류 전체보기
Attention Is All You Need는 순환·합성곱 없이 어텐션을 중심으로 구성한 Transformer를 제안한 논문이다. 이 글에서는 원 논문의 기본 모델을 기준으로 입력 임베딩부터 출력 확률까지 흐름을 정리한다.Self-Attention은 같은 시퀀스의 위치들을 직접 연결한다. Multi-Head Attention은 서로 다른 학습 투영을 사용해 여러 표현 공간에서 정보를 모은다. Self-Attention 자체가 이 논문에서 처음 제안된 것은 아니다.또한, Self-Attention을 기반으로 한 병렬 연산이 가능해짐에 따라, 순차적 처리의 한계를 극복하고 훨씬 빠른 학습이 가능해졌다.이로 인해 트랜스포머 모델은 NLP 분야에서 새로운 패러다임을 제시한 혁신적인 논문으로 평가된다. http..
백준 14428번 ‘수열과 쿼리 16’은 점 갱신과 구간 최솟값의 인덱스 조회를 처리하는 세그먼트 트리 문제입니다.각 노드에 (값, 인덱스)를 저장하면 값이 같을 때 더 작은 인덱스를 선택하는 조건까지 한 번에 해결할 수 있습니다. 트리 구성은 O(N), 각 갱신과 구간 조회는 O(log N)에 동작합니다. 14428번: 수열과 쿼리 16길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. 1 i v : Ai를 v로 바꾼다. (1 ≤ i ≤ N, 1 ≤ v ≤ 109) 2 i j : Ai, Ai+1, ..., Aj에서 크기가 가장 작은 값의 인www.acmicpc.net풀이 아이디어값과 인덱스를 함께 저장하기세그먼트 트리의 각 노드에 구간의 최솟값..
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 1. Logic 나를 이분그래프에 처음 입문시켜준 문제이다. 이분그래프란 서로 인접한 노드를 다른 그룹으로 묶을 때 서로 겹치지 않고 두개의 그룹으로 정확히 나눠지는 그래프의 형태를 말한다. 아래의 두번째 그림을 보면 좌측 노드 3개를 l1, l2, l3 / 우측 노드 3개를 r1, r2, r3라고 했을 때 우측에서 처음 시작하면 l1이 1번 그룹 서로 인접한 r1, r2, r3는 -1번 그룹 다..
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. Logic 6,9는 뒤집어서 사용할 수 있는점을 조심해서 풀이하면 된다. 만약 6과 9의 갯수가 짝수가 나온다면 2로 나눈 갯수만큼 세트를 사용하면 되지만, 홀수가 나온다면 반올림을 한 갯수만큼 사용해야 한다. 2. Code #include using namespace std; int numCnt[9]; int main() { int n; cin >> n; while(n) { int temp = n % 10; if(temp == 6 || temp == 9) { numCnt[6]++; } e..
https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. Logic 처음에 문제를 무조건 k번 말처럼 이동한 후 기회를 다 쓰고 4방향으로 이동하는 줄 알고 냅다 2차원 방문배열을 만들어서 BFS돌렸더니 당연히 틀렸다. 문제의 의도는 목적지에 도달하기 전까지 k번 이하로 능력을 사용하여 도착하는것이기 때문에 4방향으로 먼저 돌고 능력을 사용해도 된다. 즉 처음위치에서 능력을 쓰고 x칸으로 이동한 것과 능력을 안쓴상태로 x칸으로 이동..
https://www.acmicpc.net/problem/14716 14716번: 현수막 혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라. www.acmicpc.net 1. Logic 문제에서 글자인 부분 1이 상, 하, 좌, 우, 대각선으로 "인접하여 서로 연결"되어있다고 했기 때문에 그래프를 떠올릴 수 있다. 더해서 상, 하, 좌, 우, 대각선이기 때문에 8방향 BFS 또는 DFS로 풀이해줄 수 있다. 풀이 과정은 1. 입력받기 2. 1과 동시에 방문하지 않은 좌표 방문하기 3. bfs or dfs에서 8방향 확인해서 1, 미방문 좌표 들어가기 4. 함수 호출한 횟수 count C++은 BFS로 파이썬은 연습중이라 BFS, DFS 두가지 방법 모두 풀이해봤다...
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 1. Logic C++로 풀이할 때는 좌우로 큐를 회전시켜야 할 때 직접 빼고 넣어줘야 하기 때문에 움직여야 할 숫자가 음수인지 양수인지에 따라 경우를 나눠서 풀이했다. 하지만 파이썬으로 풀이할 때는 파이썬 queue에는 rotate라는 함수가 있기 때문에 훨씬 쉽게 구현할 수 있었다. rotate 함수는 안에 들어가는 인자가 양수이면 큐 안의 인자들을 오른쪽으로 절댓값만큼 이동..
https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 1. Logic 정렬한 후 투포인터를 사용해서 m과 같은 갯수를 카운트해주면 된다. 2. Code c++ #include using namespace std; int n, m; int ingredient[10000000]; int solve() { int left = 0; int right = n-1; int cnt = 0; while(left < right) { if(i..
https://www.acmicpc.net/problem/1535 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 1. Logic 경우의 수를 나눠보게 되면 인사를 할때와 안할 때 두가지의 경우의 수로 분류할 수 있다. 각 인사를 할지 말지에 대한 고민을 풀이해야 하기 때문에 배낭 문제(KnapSack Problem)라고 볼 수 있다. 2. Code C++ #include using namespace std; int n; int dp[21][101]; int lose[20]; int delight[20]; ..
