본문 바로가기

분류 전체보기

(263)
Beakjoon] 여행 가자(백준 1976코테) - 그래프 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/1976 🚩문제 🪡풀이 - 이동하기 원하는 길이 모두 이어져있는지 union find를 통해 간단하게 찾을 수 있다 - 각 노드(도시)가 이어진 루트 노드를 별도의 배열에 저장해 둔다. - 이어진 길은 union find로 재귀 탐색하며 루트노드의 값으로 업데이트시킨다 - 트리구조에서 스타구조 모형으로 점점 변해가며 시간복잡도가 줄어든다. ☕코드는 아래 숨김 더보기 #include #include std::vector ROAD; int find(int a) { if (a == ROAD[a]) return a; return ROAD[a] = find(ROAD[a]); } void UnionFunc(int a, int b) { a = ..
Beakjoon] 물통 (백준 2251코테) - 그래프 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/2251 🚩문제 🪡풀이 - 그래프로 map을 그려놓고 BFS, DFS 하는 것이 아닌 역으로 그래프를 그리는 문제 - 2차원 길찾기와 유사하게 물의 이동의 케이스를 배열로 구성한다. (0->1, 0->2, 1->0, 1->2, 2->0, 2->1) - 방문여부는 A와 B의 물통 양으로 이차원 배열을 만들어서 체크한다. - A, B, C의 물통의 양을 입력받은 뒤 BFS탐색을 시작하되 이동할 노드를 큐에 추가하고(예:0에서 1) 방문한 경우는 제외시킨다. - 받는물통한테 보내는 물통의 모든 용량을 추가한 뒤 기존 물통의 크기를 초과한 경우 초과한 만큼 다시 보내는 물통으로 보낸다. 초과하지 않았을 경우 보내는 물통은 0을 저장한다. ..
Beakjoon] Ax+By=C (백준 21568코테) - 정수론 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/21568 21568번: Ax+By=C A, B, C가 주어졌을 때, Ax+By=C를 만족하는 (x, y)중에서 다음을 만족하는 것을 아무거나 찾아보자. x, y는 정수 -1,000,000,000 ≤ x, y ≤ 1,000,000,000 www.acmicpc.net 🚩문제 🪡풀이 - ax+by = c 의 방정식의 해를 구하기 위해서는 확장 유클리드 호제법을 호제법을 사용해야 한다 - c % gcd(a,b) == 0 인 경우에만 정수해를 가지므로 먼저 체크 - 유클리드 호제법을 수행하되 x와 y의 이전값을 가지고 역순으로 계산하며 답을 찾아낼 수 있다 - x는 y', y는 x'-y'*q를 역순으로 계산한다. (이때 x' 는 x의 이전..
2023년 4분기 개발자 회고록 1. 회사🏢 새로운 업무를 시작한 지 벌써 한 분기라니.. 라고 하지만 기존 업무 유지보수를 병행하다 보니 크게 집중할 수 없었다. 게다가 새 업무는 프로젝트가 너무 많아서 기존 구조 파악만으로도 많은 시간이 걸렸다. 오래된 레거시 코드들 + 담당자들이 퇴사하며 인수인계만 겨우 되고 이후 플젝 수정이 없어서 히스토리나 내부 동작을 모르는 코드들 + 형상관리가 안돼서 코드 위치조차 찾기 힘든 코드들 + 정리된 문서는 거의 없고 얼마 안 되는 문서조차 최초 개발 시 작성된 코드만 조금 있어서 현재 구조와 다르며 신뢰성이 없는 문서들 + 게다 코드 내부는 시간에 쫓기였는지 나중은 전혀 고려하지 않고 다 때려 박은 나쁜 코드들.. + 다 비슷비슷한 프로젝트명들 과거 회사들도 이런 상황은 매우 흔했다. 개발자 실..
Beakjoon] 최소공배수 (백준 1934코테) - 정수론 (C++) 🅰️문제주소 : https://www.acmicpc.net/problem/1934 🚩문제 🪡풀이 - 우선 유클리드 호제법으로 최대공약수를 구해야한다 - 최소공배수 = 'A*B / 최대공약수' 공식에 대입한다 끝 ☕코드는 아래 숨김 더보기 #include int main() { std::ios::sync_with_stdio(false); std::cout.tie(0); std::cin.tie(0); int T, A, B; std::cin >> T; for (int i = 0; i > A >> B; int big, small; if (A
DLL Error "Expression: __acrt_first_block == header" 나의 상황은 DLL 프로젝트와 DLL을 명시적으로 링크하고 함수를 호출하는 간단한 MFC 기반 exe로 구성되어 있었다. 어느 순간부터인가 DLL의 함수를 호출하면 해당 함수가 종료 시 exception이 발생하여 "Expression: __acrt_first_block == header"이란 에러를 발생했다. 구글에 찾아보니 원인이 여러 개가 있는 듯했다. "주원인은 힙 메모리를 공용으로 사용하는 과정에서 메모리 해제 시 발생하는 문제" 이며 해결 상황은 여러 가지가 있었다. 1. DLL과 EXE의 MFC설정이 다른 경우 맞춰주기 DLL과 힙메모리를 같이 쓰는지 설정하는 값으로 맨뒤에 소문자 d는 디버그 모드이며 MT의 경우에는 MFC Static Library를 사용하는 것이고 MD의 경우에는 MFC..
펌 ] 삶을 바라보는 태도 - 인생을 게임처럼 살아보기 긱뉴스에서 상당히 재밌는 글 + 제법 공감도 많이 되는글을 읽게 되어 공유합니다 아래 링크에서 읽어주세요 https://zzsza.github.io/diary/2023/12/17/live-like-a-game/#%EC%A0%80%EB%8A%94-%EB%8B%A4%EB%A5%B8-%EC%82%AC%EB%9E%8C%EB%93%A4%EC%97%90-%EB%B9%84%ED%95%B4-%EB%AA%BB%ED%95%B4%EC%84%9C-%ED%9E%98%EB%93%A4%EC%96%B4%EC%9A%94 삶을 바라보는 태도 - 인생을 게임처럼 살아보기 키워드 : 인생의 태도, 게임처럼 살자, 인생을 게임처럼, 삶의 태도 인생을 바라보는 태도 인생을 살다보면 다양한 경험을 하기도 하고, 좋은 일도 있고 힘든 일도 존재합..
WinInet httpsendrequest() 멈춤, 응답없음, 오류 기존의 exe로 된 프로세스를 DLL로 변환하는 작업 중 프로그램이 멈추는 현상이 확인되었다. 디버깅 결과 WinInet의 httpsendrequest() 함수에서 아무런 응답을 주지 않았다. https://learn.microsoft.com/ko-kr/windows/win32/api/wininet/nf-wininet-httpsendrequesta HttpSendRequestA 함수(wininet.h) - Win32 apps 지정된 요청을 HTTP 서버로 보내 호출자가 일반적으로 HttpSendRequestEx에 전달되는 것 이상으로 추가 데이터를 보낼 수 있도록 합니다. (ANSI) learn.microsoft.com 하다못해 에러라도 발생하면 오류코드 검색을 해 볼 텐데 아무런 응답 없이 멈춰만 있으..