본문 바로가기

전체 글31

20학번 아싸 학교 첫 탐방기 오늘 개강했다. 코로나로 인해 20-21 년도를 비대면으로만 수업하다가 오늘 처음 대면 수업을 했다. 새로운 시작인데 야속하게도 아침부터 비가 쏟아졌다. 비를 뚫고 1교시 수업을 들으러 학교로 갔다. 총 3과목을 들었다. 데이터통신 영어로 강의를 진행한다는 점에서 살짝 걱정이 되었다. 내가 모르는 분야를 배울 때 한글로도 쉽지 않을 텐데 영어로 하면 내가 잘 이해할 수 있을까 걱정이 되었다. 근데 강의 내용을 이해하기에 영어라는 언어장벽은 그렇게 높지 않았다. 전문적인 기술이 아니라 첫 개요라 내용이 쉬워서 그런가 영어가 그렇게 이질감 있게 느껴지지 않았다. 그리고 1교시이지만 영어를 알아들으려고 집중하다 보면 뇌가 100% 활성화되는 기분이 느껴졌다. 그리고 강의평이 너무 안 좋았다. 질문게시판에 글을.. 2023. 8. 28.
알고리즘 유형 (DP, 다이나믹 프로그래밍) DP는 알고리즘 문제 중에 가장 감이 잡히지 않는 유형이다. 개념 자체는 이해가 되지만 문제를 봤을 때 DP로 풀어야겠다고 바로 떠올리기가 힘들다. DP문제 임을 알고 풀지만 문제만 보고 DP 문제라고 판단하기가 쉽지 않다. 일단 대표적인 DP 문제 유형을 나름 정리하면서 감을 잡으려 하고 있다. DP는 dymamic programming의 약자로, 직역하면 동적 프로그래밍이다. 동적 프로그래밍이라고 해서 동적할당 방법을 쓰지 않는다. 이름과는 무관하게 '동적'과 관련이 없어서 '기억하며 풀기'가 가장 의미있다는 의견이 많다. DP는 큰 문제를 부분문제로 나누고 부분문제를 풀어가면서 결론적으로 큰 문제를 푼다는 개념이다. 이렇게만 들으면 분할정복과 다를 바가 없고, 앞서 이야기한 '기억하며 풀기' 랑도 .. 2023. 8. 27.
알고리즘 유형 (백트래킹) 나는 C++ 를 사용해서 백준 알고리즘 문제를 푼다. 단계별로 풀기로 문제를 푸는데 생소하고 처음보는 유형의 알고리즘이 나오면 블로그에 정리하려고 한다. 지금껏 프로그래밍 언어를 통해 과제가 주어지면 복잡도, 메모리, 중복여부 이런 부분들을 고려하지않고 짰었다. 알고리즘문제를 풀게 되면 나처럼 프로그래밍을 하던 사람은 필시 막힐 수 밖에 없다. 단계별 풀기 단계에서 처음으로 막혔던 부분은 정렬 알고리즘에서 였고 새롭게 느낀점과 알고리즘을 종류별로 이 블로그에 포스팅 했었다. 단순히 과제를 구현하는 데에 그치지 않고 시간복잡도와 메모리를 고려해서 짜는 프로그램의 중요성을 알게 되었다. 정렬 알고리즘 이후 개인적으로 막혔던 곳은 재귀-백트래킹-DP 단계이다. 재귀는 과제를 수행하면서도 많이 접해보아서 그렇게.. 2023. 8. 25.
윈도우11 환경에서 Ubuntu 20.04 듀얼부팅으로 설치하기 & Ubuntu 부팅 안되는 현상 해결 ros를 써야할 상황이 생겨서 노트북에 Unbuntu 20.04 버전을 설치하려 한다. 노트북은 hp사의 빅터 15-fb0070AX 모델이고 윈도우 11이 깔려있는 상태이다. 윈도우 11을 지우고 Ubuntu 만 깔아도 되지만 윈도우도 필요했기에 그냥 듀얼 부팅으로 설치하기로 했다. 저번 포스팅에서는 윈도우 10& Ubuntu 18.04 듀얼 부팅 상황에서 GRUB과 우분투를 지우는 과정을 포스팅했다면 이번에는 반대로 메모리의 파티션을 나누고 Ubuntu를 듀얼부팅으로 설치하는 과정을 포스팅 하려 한다. 그 과정에서 난 ubuntu를 정상적으로 설치했음에도 불구하고 부팅이 안되는 문제를 겪었는데 이를 해결한 과정도 적으려고 한다. 우선 Ubuntu가 설치된 USB를 만들어야 한다. 운영체제마다 크기가 다.. 2023. 5. 28.
알고리즘 시간 줄이기 (입출력 시간 줄이기 : 버퍼 비동기화 & io untied) 저번 정렬 알고리즘 포스팅에서 살짝 언급했던 입출력 시간 줄이기를 해보려고 한다. 백준 2751 문제를 풀기 위해 헤더파일에 있는 sort() 함수를 사용하려 했는데, sort() 함수의 복잡도가 O(nlogn) 인데도 불구하고 시간초과가 났었다. merge sorting 알고리즘도 같은 O(nlogn) 복잡도를 가지지만 시간초과가 나지 않는 것을 보면 sort() 함수 문제가 아니라 다른 부분에서 시간을 많이 잡아 먹는 다는 뜻인 것 같았고, 그래서 입출력에서 시간을 줄이는 방법을 찾아보기로 하면서 해당 부분들을 공부했다. 흔히 쓰는 방법 3가지가 있다고 한다. 그냥 코드만 붙여주면 되는 단순한 작업이지만 원리를 이해해서 능동적으로 활용하고 싶었다. c++ 입출력 버퍼와 c 입출력 버퍼를 비동기화 시키.. 2023. 5. 21.
알고리즘 시간 줄이기 (정렬 알고리즘) cpp를 복습하고 백준 알고리즘 문제를 풀면서 감을 익히고 있다. 그중 나름 공부가 되었던 것을 위주로 기록을 남기려 한다. 백준 2751번 문제이고 N개의 수를 입력받아 오름차순으로 정렬해 출력하는 간단한 문제이다. 겉보기엔 간단한 문제이지만 N의 입력 범위가 1 최솟값인 1과 정렬된 부분의 뒤(처음엔 정렬된 부분이 없으므로 0번째) 와 값을 바꾼다. 1 2 4 5 3 -> 1은 정렬된 배열이므로 그 다음 최솟값을 찾는다. -> 정렬된 배열 뒤의 값과 최솟값이 일치한다. 1 2 4 5 3 -> 그 다음 최솟값인 3을 4와 바꾼다. 1 2 3 5 4 -> 그 다음 최솟값인 4를 5와 바꾼다. 1 2 3 4 5 복잡도 최악의 경우의 수는 n + (n-1) + ... + 2 + 1 이고, 즉 n(n+1)/2.. 2023. 5. 21.
[컨퍼런스] 'AI 엑스포 2023' 23.05.12 서울 삼성역 코엑스에서 진행한 'AI 엑스포 2023' 컨퍼런스를 참여했다. 2021년도에도 똑같은 행사에 참여한 적이 있었는데 작년엔 부득이하게 참여하지 못했고 올해는 참여하고 싶어 사전 등록 했었다. 이번 행사에 참여하면서 2021년에 보았던 것들과 비교해보고 얼마나 AI 시장이 발전했는가 & 트렌드 변화가 일어났는가를 보려고 했다. 많은 기업들이 있었고 현재 대한민국의 AI 트렌드와 정도를 알아볼 수 있어서 나름 유익했던 행사였다. 공학도로서 나도 괜시리 열정이 불타오르게 되기도 하고 기발한 아이디어는 나를 자극시켰다. 좋은 서비스들이 많았고 신기한 기술들도 있었다. 그중 기억에 남는 몇가지를 끄적여 보려 한다. 인트플로우 주식회사 [엣지팜] 영상처리 기술을 활용해 효율적인 가축농업.. 2023. 5. 18.
[특강] 'Chat-GPT가 몰고 온 새로운 전환의 시대' 23.05.11에 건국대학교에서 진행한 동문 초청 특강을 신청해서 듣고 왔다. 'Chat-GPT가 몰고 온 새로운 전환의 시대'라는 주제로 와이즈넛 대표이사이신 강용성님께서 오셔서 강연해 주셨다. 생성 AI에 대해 알아보고 싶었고, 생성 AI 붐이 일어나면서 내가 그런 시대에 발맞추어 어떻게 활용할지 견해를 얻고자 강연을 신청했다. 우선 강연자님에 대한 소개가 있었는데, 조금 의아했다. 철학과 출신이신데 현재 하시는 분야는 IT업계에서 일하고 계셔서 의문점이 생겼다. 강연자님은 '친구따라 강남간다' 라는 말처럼 친구따라 신청한 컴퓨터 교육을 수강하게 되면서 자연스레 이쪽 일로 들어섰다고 하셨다. 물론 IT 회사가 전부 개발자가 아님을 강조하시면서 비전공자가 IT 회사에 취직할 수 있음을 강조하셨다. 항상.. 2023. 5. 12.
cpp 복습 후 느낀 점 23.04.17를 끝으로 c++언어 복습을 마쳤다. 예전에 학습했던 c++언어를 이제와서 다시 꺼내보니 옛날 기억이 살아나면서 감회가 새로웠다. c++를 학습한 이유는 c++ 언어에나름 여러 프로그래밍의 요소들이 섞여 있기에 복합적으로 학습하기 좋다고 생각했기 때문이다. Java의 객체지향적 요소와 c언어의 포인터 개념을 c++언어를 통해 한 번에 익히기 좋았다. 처음 복습할 땐 굉장히 당황했다. for문도 제대로 작성하지 못하는 나를 보면서 너무 절망스러웠고 스스로에게 실망했다. 하지만 예전의 내 노력들은 나도 모르게 나에게 스며들어 있었고, 복습을 하면서 다시 쉽게 익히는 나를 보며 예전의 노력이 헛되지는 않았다는 것을 느꼈다. 영화티켓예매 문제를 똑같이 수행해 보면서, 옛날의 난 정말 무식하게 코딩.. 2023. 4. 25.