2024/11 60

프로그래머스 LV.1 완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제는 크게 2가지 해법을 가진다.1. sort를 통한 단순 비교로 계산할 수 있는 경우2. 해쉬맵을 이용하여 통과한 선수를 제거하는 경우 sort는 비교적 쉽다.STL을 익숙하게 사용하기 위해 다음과 같이 코드를 짰다. #include #include #include using namespace std;string solution(vector participant, vector completion) { string answer = ..

연산자 오버로딩을 남용하는 것

남용하여 나만의 의미로 만들면협업의 효율성이 떨어질 수 있다.자유도가 높은 언어일 수록애매하게 쓰지 않도록 함수로 만드는 것이 좋다. (ex 자바처럼)가령 다음과 같이벡터 *= 벡터 의 코드와 같은 경우에연산자 오버로딩을 사용했다면 해당 경우가 벡터 곱샘이 외적인지 내적인지 모호성을 띄게 된다.이를 함수로 명확히 이름을 통해 알 수 있도록 코드를 제작하여,dotproduct 인지 crossproduct 인지 명확한 이름을 사용하여 함수를 짠다면가독성도 높고, 해당 코드에 대한 의미가 명확해진다.대입 연산자와 복사 생성자의 유사성복사 생성자와 대입 연산자는 거의 비슷하지만차이점은대입 연산자는 메모리를 해제해 줄 필요가 있을 수 있으며,대입 연산자는 이미 만들어 진 객체를 쓰고복사 생성자는 방금 생성된 객체..

프로그래머스 LV.2 피로도

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr푸는 방법은 크게 2가지이다. 1. 배열의 모든 경우의 수를 싹 돌아보는 것2. DFS로 푸는 것이다. 1번째의 경우에는 next_permutation 알고리즘을 써서 모든 경우의 수를 탐색할 수 있다. next_permutation함수는 std의 algorithm 라이브러리 안에 내장된 함수이다.next_permutation함수는 해당 집합의 모든 순열을 구해준다. 예를 들어 {1,2,3}이라는 원소를 가진 집합이 있다면{1,2,3}{1,3,2..

Unix/Linux Architecture

KenelOS의 핵심 기능을 모아 놓은 것이다.System callOS의 기능 중 응용프로그램이 사용하도록 허락된 기능들의 집합이다.Shell사용자와 OS 사이의 인터페이스사용자의 입력을 해석하여 커널의 함수 호출Utilities응용 프로그램 예) 웹 브라우저, 파워포인트 등  Linux의 특징높은 안정성강력한 네트워크 기능GNU 소프트웨어와 함께 배포된다.오픈소스 OS이다.오픈소스이다 보니, 다양한 플랫폼에 이식이 가능하다.리눅스는레드헷, 우번투 등의 기반이 되었다.유닉스 리눅스는 CUI가 기본이다.

프로그래머스 LV.2 점프와 순간이동

https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 출발할 때 점프하는 것은 불가피하다 무조건 +1 0*2 = 0이니깐. 순간이동은 현재까지 온 거리의 2배이고 건전지를 소모하지 않기 때문에 최대한 많이 사용해야 한다. 순간이동을 했을 때 딱 맞아 떨어지지 않는 경우,즉 x*2 가 딱 맞아떨어지지 않는 경우에 ans += 1을 해주면 된다. #include using namespace std;int solution(int n){ int ans = 0; while (n > 0) {..

프로그래머스 LV.1 예산

https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 단순히 현재 예산에서 최대한 뽑아 낼 수 있는 지원 가능한 부서를 세기 위해서 vector의 sort를 이용했다. #include #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; sort(d.begin(), d.end()); for (int i = 0; i < d.size(); i++) { if (..

시스템 프로그래밍 능력을 갖춰야 하는 이유

시스템 프로그래밍을 알면 뭐가 좋을까? 더 많은 것을 할 수 있다.더 많은 것을 하면서 더 효율적이고 높은 성능을 가져갈 수 있다. 이렇게 막연하게 더 많은 것을 할 수 있다면, 이해가 안될 것이다.간단한 예시를 들어보겠다. A->B->C 를 통한 작업물 요구 요청은 비용이 많이 든다.따라서 A->C의 직접적인 요구는요구 비용도 적게든다. 요구 비용 뿐만 아니라, 직접적인 요구는더 많은 것을 요구할 수 있고,더 효율적이고 높은 성능을 가진다. 소프트웨어의 제약을 최소화시키므로,OS와 CS를 잘 알면 시스템 콜을 사용할 수 있으며,이를 통한 시스템 소프트웨어의 설계를 직접 할 수 있다면,중간 과정이 없기 때문에 더 높은 퍼포먼스를 가져갈 수 있다. 시스템 프로그래밍 능력을 갖추면 좋은 점 즉,시스템 프로그..

허브

허브란?허브는 물리 계층 장비이다. 통신 매체를 통해 송수신되는 메시지는 다른 호스트에게 전달되는 과정에서 네트워크 장비를 거칠 수 있다. 대표적인 네트워크 장비로 물리 계층에는 허브가 있고, 데이터 링크 계층에는 스위치가 있다. 먼저 물리 계층에서 여러 대의 호스트를 연결하는 허브의 특징을 살펴보고, 이와 관련해 허브의 동작 방식인 반이중 모드 통신에 대해 알아보겠다. 아울러 이와 반대되는 개념인 전이중 모드 통신도 함께 학습해보자. 허브에서 발생하는 충돌이라는 문제와 이를 해결하기 위한 CSMA/CD도 학습해보자. 데이터 링크 계층에는 NIC와 스위치가 있다. 스위치는 전이중 통신과 VLAN이란 특징을 가진다. 물리 계층에는 트위스티드 페어 케이블, 광섬유 케이블, 허브 허브는 반이중 통신, CSMA..

프로그래머스 LV.2 - N개의 최소공배수

https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  최대 공약술르 구하는 알고리즘으로 유클리드 호제법이라는 것이 있다.이 알고리즘을 통해 최대 공약수를 구하는 과정을 코드로 나타내면 다음과 같다. int GCD(int a, int b){ int m = max(a, b); int n = min(a, b); while (m % n != 0) { int r = m % n; m = n; n = r; } return n;} 왜 최대 ..