[우테코 8기 BE] 최종시험 후기 및 회고
·
우아한테크코스 8기 백엔드
최종 코딩테스트 준비프리코스가 끝난 지 한 달하고도 2주 쯤 뒤, 1차 합격자 발표가 나왔었습니다. 솔직히 말하면 크게 기대하지 않았던 결과였기에 합격 소식이 더 기뻤습니다. 하지만 동시에 비상이었습니다.. 솔직하게 얘기하면 전공자지만 저한텐 자바가 엄청 친숙한 언어는 아니었고, 인텔리제이 AI 자동완성이 아니면 코드 작성이 조금 버거웠습니다. 최종 테스트에선 AI 기능을 모두 사용할 수 없었습니다. 따라서 스스로 코드를 생각한대로 작성할 수 있게 되는 것에 집중하여 공부했습니다. 알고리즘이나 구현은 평소에 C++로 백준을 풀며 연습을 많이 해왔던지라 크게 어렵게 느껴지진 않았는데, 자바의 문법과 컨벤션 클린코드 규칙 준수, 객체지향 설계 원칙을 고려하며 작성하는 것이 어려웠습니다.다시보니 C/C++ ..
n8n + GPT 자동화 만들기 2 (카카오톡 경제 브리핑 봇 구축)
·
AI/n8n
저번 게시글에 이어서 이번에는 HTTP Request로 받은 데이터를 ChatGPT 모델로 정제하고, 카카오톡 메시지로 자동 전송하는 방법을 다룬다. 4단계: OpenAI로 메시지 정제하기Code 노드 옆 '+' 버튼을 클릭해 새 노드를 추가한다. 여러 AI 모델을 사용할 수 있지만, 이번에는 모두에게 익숙한 OpenAI를 활용하기로 했다. (AI 모델은 아무거나 사용해도 좋다.) 모두에게 익숙한 OpenAI의 text model을 활용하여 노드를 만들어보기로 결정했다. AI 노드 선택 후, OpenAI를 선택하고 Message a model 을 선택하면 된다. n8n에서 제공하는 무료 OpenAI API를 활용할 수 있다. Credential은 'n8n provided AI credentials'를 선..
n8n + GPT 자동화 만들기 1 (카카오톡 경제 브리핑 봇 구축)
·
AI/n8n
나는 매일 친구들이 모여 있는 카톡방에서 환율·코인·지수 같은 시장 지표를 보며 경제 토크(?)를 하곤 한다. 그럴 때마다 여러 앱을 돌아다니며 숫자를 캡처해 보내는 일이 점점 귀찮아졌고, “이걸 자동으로 정리해서 톡방에 뿌려주면 얼마나 편할까?” 하는 생각이 들었다. 그래서 자동화 연습도 할 겸, n8n과 GPT, 카카오톡을 이용해 매일 시장 상황을 요약해 보내주는 ‘경제 브리핑 봇’을 직접 만들어 보기로 했다.이번 글에서는 n8n 클라우드(14일 무료 체험)만 있으면 누구나 따라 할 수 있는 방식으로, GPT API와 카카오톡을 묶어 데일리 시장 브리핑을 자동화하는 과정을 단계별로 정리해 본다. 1단계: n8n 가입 및 workflow 생성n8n에 가입한 후 'New workflow' 버튼을 클릭해 ..
[BOJ] 19581 두 번째 트리의 지름
·
백준 문제풀이/bfs
문제 요약문제 링크: 백준 19581 - 두 번째 트리의 지름문제 설명 접근 방법기존 트리의 지름을 구하는 과정에서, 한 가지의 기믹을 추가하면 된다.bfs 탐색함수의 매개변수 close로 특정 노드의 방문처리를 미리 해두는 것이다. 이를 활용하여, s에서 출발하지만 e로 향하지 않는 지름의 길이와 그 반대의 경우(e에서 출발하고 s로는 방문X) 지름의 길이를 비교해주면 두 번째로 긴 트리의 지름을 구할 수 있게 된다.코드#include using namespace std;int n;vector>v[100001];pair bfs(int node, int close) { vectorvis(n + 1, 0); if (close != -1) vis[close] = 1; // 노드 방문처리로 연결 ..
[BOJ] 33578 누가 이름 안 적고 나갔어
·
백준 문제풀이/bfs
문제 요약문제 링크: 백준 33578 - 누가 이름 안 적고 나갔어문제 설명접근 방법처음엔 일반적인 방문처리 기반 BFS 문제로 접근해서 풀이했다. 하지만 계속 틀렸고 아래와 같은 반례를 만들 수 있었다. 2 6S....JTTTTT. 답은 9가 나와야 한다. (0, 5) → (1, 5) → (1, 4) → (1, 3) → (1, 2) → (1, 1) → (1, 0) → (0, 0)일반 방문처리 기반 BFS로 구현한다면, 큐는 걸음 횟수가 아닌 이동 횟수 자체가 적은 순서대로 작동하기에 문제에서 요구하는 최소 걸음 횟수를 구할 수 없게 되는 것이 그 이유이다. 따라서 이 문제에선 SPFA(Shortest Path Faster Algorithm) 알고리즘을 적용해서, 방문처리가 된 장소라 하더라도 더 빠른 ..
[BOJ] 34984 간판 만들기
·
백준 문제풀이/dynamic programming
문제 요약문제 링크: 백준 34894 - 간판 만들기문제 설명 접근 방법dp[i][j]i: 현재 문자열 s의 i번째 인덱스까지 탐색했을 때,j: 목표 문자열 "UOSPC"의 j번째 문자까지 완성하는 데 드는 최소 비용 최솟값을 구해야 하니, DP값을 모두 INF 값으로 초기화 해야 한다.코드#include using namespace std;using ll = long long;int n;string s;ll a[300001], dp[300001][5], ans = 1e14;char x[5] = { 'U','O','S','P','C' };void solve() { for (int i = 0; i > n >> s; for (int i = 0; i > a[i];}int main() { ios..
[BOJ] 3876 sed 이용
·
백준 문제풀이/bfs
문제 요약문제 링크: 백준 3876 - sed 이용문제 설명접근 방법α 를 β로 치환하며 주어진 목표 문자열로 변환시키는 문제다. string을 방문처리하여 가지치기를 하는데 unordered_map을 사용하고, bfs로 최소 치환 횟수를 구해줄 수 있다. 모든 규칙에 대하여 완전탐색을 진행, 치환의 규칙과 문자열 인덱스에 유의해야 한다.예제 1번에서 a -> bb -> aaaa -> bbbbbbbb 의 형태로 3번에 치환할 수 있다.코드#include using namespace std;int n;unordered_mapm; // 규칙unordered_mapvis;string a, b;void solve() { queue>q; q.push({ a,0 }); vis[a] = 1; ..
[우테코 8기 BE] 4 & 5 주차 오픈미션
·
우아한테크코스 8기 백엔드
워드탐정 프로젝트 회고: 낯선 도구와 AI로 만든 한국어 유사도 게임 우아한테크코스 웹 백엔드 8기 프리코스 오픈 미션으로 워드탐정이라는 웹 게임을 개발했습니다. 2주라는 짧은 시간 동안 처음 사용해보는 기술 스택과 AI를 결합하여 의미 있는 결과물을 만들어낸 과정을 공유하고자 합니다. 프로젝트 개요미션 선택: 낯선 도구 해커톤 + AI 기술 융합우테코 프리코스 오픈 미션은 세 가지 옵션 중 하나를 선택할 수 있었습니다:낯선 도구 해커톤고난도 문제 해커톤제한 협업 미션워드탐정이란?매일 새로운 정답 단어가 주어지고, 플레이어가 입력한 단어와 정답 단어의 의미적 유사도(0~100%)를 AI가 계산해주는 게임입니다. 유사도가 높은 단어를 찾아가며 정답을 추리하는 방식으로, 비슷하게는 꼬맨틀 사이트가 있습니다...
[BOJ] 18224 미로에 갇힌 건우
·
백준 문제풀이/bfs
문제 요약문제 링크: 백준 18224 - 미로에 갇힌 건우문제 설명접근 방법큐에 현재 움직임 횟수와, 낮인지 밤인지를 저장해가며 탐색해준다. 낮일 때의 움직임은 0인 좌표에만 1칸씩 이동을 처리해주면 된다.밤일 때 움직임을 잘 처리해주면 되는데, 주의할 부분은, 방문처리에 대한 부분이다.같은 좌표더라도 낮/밤 상태와 현재 이동 횟수의 조합을 모두 체크해야 한다.코드#include using namespace std;int n, m, mat[501][501];int d[4][2] = { {0,1},{-1,0},{1,0},{0,-1} };bool vis[501][501][2][11]; // 방문체크는 {y,x} 좌표와 밤or낮, 움직인 횟수(m 최대 10) void solve() { queue>q; ..
[BOJ] 24232 망가진 나무
·
백준 문제풀이/dfs
문제 요약문제 링크: 백준 24232 - 망가진 나무문제 설명접근 방법문제에서 주어진 입력을 무방향 그래프로 구성하면 트리 구조를 가지는 그래프가 된다.예제1의 경우를 그림으로 살펴보면이렇게 된다. 간선마다 번호가 있다는 것에 유의하자예제 1번은 노란색 정점(2번)에서 시작하면 4번 간선만 뒤집게 된다면 트리 구조, 즉 2번 정점에서 출발하여 모든 정점에 도달 가능한 형태가 된다. 1. 우선 임의의 정점에서 그래프의 방향을 신경쓰지 않고 모든 정점에 도달할 때 까지 몇 번 간선을 뒤집어야 하는지 세준다. (DFS 첫번째 탐색) 2. 정점을 모두 돌며 세준 값을 기준으로 다시 해당 임의의 정점부터 모든 정점까지 탐색을 해주는데, 이때 간선이 존재한다면(임의의 정점에서 자식으로 간선이 존재하고 방향이 올바르..