
1차 코딩테스트에서 실수를 했으면 어떡하지.. 하는 생각에, 공부에 집중을 못하고 있는 상황이었는데,,2025년 2월 28일 금요일에 1차 코딩테스트 합격 문자를 받고, 본격적인 2차 준비를 시작했습니다! 알고리즘 준비 알고리즘 - 문제 해결 아이디어 | Notion~2025/02/03billowy-nape-057.notion.site SQL 준비 SQL | Notion2025/02/04 (화요일)billowy-nape-057.notion.site 2차를 대비하기 위해서, 알고리즘에서는 개념만 알고있었던 다익스트라, 플로이드-워셜, union-find 등의 알고리즘을 복습했고, BFS/DFS의 경우, 실수가 없게끔 훈련했습니다. DP는 이전에 풀었던 문제들을 포함하여 다양한 아이디어를 계속 접하면서, 점..

2025년 2월 22일 어제, SW마에스트로 1차 코딩테스트를 응시했습니다.간절히 들어가고 싶은 SW마에스트로이기에, 정말 열심히 준비했습니다. 알고리즘 준비 알고리즘 - 문제 해결 아이디어 | Notion~2025/02/03billowy-nape-057.notion.site SQL 준비 SQL | Notion2025/02/04 (화요일)billowy-nape-057.notion.site 노션에 제가 풀었던 문제에서 어느 부분을 생각하지 못했는지, 몰랐던 부분은 무엇인지 정리하면서 나름대로 꼼꼼히 준비했습니다. 준비하다보니 어느덧 백준 플레도 달성했습니다..ㅎㅎ 이제 각 문제에 대한 간단한 회고를 해보겠습니다.문제 유출을 하면 안될 것 같아서, 자세한 문제 설명은 생략하겠습니다!! 🧩 SQL (5번)..
SW마에스트로 15기 2차 코딩테스트 복기문제는 총 5문제였고, 알고리즘 4문제, SQL 1문제가 나왔다.난이도는 체감상 1차보다 훨씬 어려웠다. 난이도가 높아서 내 실력으로는 가늠할 수가 없었다.최소 평균 골드3 정도?제한시간은 1차 때와 똑같이 문제당 10초였고, 메모리는 2GB였다.시험시간은 똑같이 총 120분이었다.SQL을 먼저 푸는데, 변수를 활용해야하는 문제가 나와버렸다. 기존에 알고 있던 내용으로 풀 수 없을까 고민하다가 포기했다..1번은 20분 이내로 풀었고, 2,3,4번이 안풀려서 계속 왔다갔다 거리다가 시간이 다 지나갔고, 결국 2번을 깡 DFS로 풀고 제출했다.제출하자마자 든 생각은,,"아.. 떨어졌다.."너무 허무했다. 1차 때, 10분 남기고 5문제를 다 풀어서, 2차도 해볼만 하..
나의 첫 코딩테스트문제는 총 5문제였고, 알고리즘 4문제, SQL 1문제가 나왔다.난이도는 생각보다 쉽게 나왔다. 체감상 브론즈2~골드5 정도였던 것 같다제한시간은 문제당 10초였고, 메모리는 2GB였다. 백준에서는 많아봐야 512MB였는데 2GB나 줘서 편안하게 풀었던 것 같다.시험시간은 총 120분이었다.SQL을 먼저 풀었고, 알고리즘 3문제를 풀었더니, 1시간이 남아있었다. 마지막 한 문제에 40분 정도 쓴 것 같다.5문제 전부 테스트 케이스는 맞췄는데, 합격 여부는 아직 미지수이다.코딩테스트는 프로그래머스에서 진행되었고, 모니토앱(?)으로 신분증 검사하고, 앞뒤좌우상하를 카메라로 검사하고, 시험볼 때는 노트북 웹캠과 폰카메라 두 기기로 동시에 녹화 및 감독하며 시험을 진행했다. A4용지에 뭐 써진..
크루스칼 알고리즘간선들의 비용을 기준을 정렬한 뒤, 사이클을 이루지 않게끔 최소 신장 트리를 형성하는 알고리즘비용을 기준으로 간선들을 오름차순으로 정렬한다.간선들을 하나씩 확인하며 사이클을 발생시키는지 확인한다.사이클을 발생시킬 경우 포함 x사이클을 발생시키지 않으면 최소 신장 트리에 포함시킨다.모든 간선에 대하여 2번 과정을 반복한다. 크루스칼 알고리즘# 사이클 여부 판별을 위한 union-find 함수들def find(parent, x): if parent[x] != x: parent[x] = find(parent, parent[x]) return parent[x]def union(parent, a, b): a = find(parent, a) b = find(pare..
서로소 집합공통 원소가 없는 두 집합서로소 집합들로 나누어진 원소들의 테이터를 처리하기 위한 자료구조는 union 연산과 find 연산으로 조작할 수 있다. union 연산 : 서로 다른 두 원소에 대하여 합집합을 수행하는 것이다. 각각의 루트 노드를 찾아서 그 두 노드 중 더 작은 루트 노드를 가리키도록 하는 방식이다. find 연산 : 특정 원소가 속한 집합을 찾는 것이다. find_parent 함수를 재귀 호출하여 루트 노드를 찾는 방식이다. 서로소 집합 알고리즘def find_parent(parent, x): # 자기 자신이 parent일 경우에는 자신이 루트 노드라는 것이기 때문에, # if 문을 건너뛰고 자기 자신을 리턴한다. if parent[x] != x: ..
최단 경로말 그대로 가장 짧은 경로를 찾는 알고리즘학교 알고리즘 수업시간에 다익스트라 알고리즘과 플로이드 워셜 알고리즘 이 두 가지를 배웠었는데, 이코테에서도 이 두 가지를 설명하고있다.한 지점에서 다른 특정 지점까지의 최단 경로를 구해야하는 경우 - 다익스트라 알고리즘모든 지점에서 다른 모든 지점까지의 최단 경로를 구해야하는 경우 - 플로이드 워셜 알고리즘 다익스트라 알고리즘다익스트라 알고리즘은 음의 간선이 없을 경우 정상적으로 동작한다. 음의 간선이란 0보다 작은 값을 가지는 간선을 의미한다.출발 노드 설정최단 거리 테이블 생성방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신3, 4번 반복3번에서 방문되지 않은 노..
유클리드 호제법기초 지식이지만, 두 번이나 까먹어서 정리해둬야할 것 같다.나머지로 나누고, 또 그 나머지로 나누고 ... 반복 최대공약수def gcd(a,b): while b > 0: remainder = a%b a = b b = remainder return a 최소공배수def lcm(a,b): return a*b//gcd(a,b) 백준 - 최소공배수두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구..