본문 바로가기

전체 글28

[C++] 2개 이하로 다른 비트 ★★ 2개 이하로 다른 비트 난이도 ★★ 문제 내 풀이 규칙찾기 ■ 짝수 0을 포함한 2, 4, 6,... 짝수들은 비트로 표현했을 때, 가장 오른쪽 비트는 항상 0이다. 가장 오른쪽 비트는 2^0 = 1에 대응하며, 그 외 나머지 비트들은 모두 2^i으로 짝수이기 때문이다. 가장 오른쪽 비트가 1이면 + 1이 된다는 것이므로 그 비트는 무조건 홀수가 될 수 밖에 없다. 따라서 짝수인 수 2n들의 f 값은 언제나 2n + 1이다. 가장 오른쪽 비트가 0이기에 1을 더해주면 '올림'없이 총 1개의 비트만 다르게 된다. ■ 홀수 짝수와 달리 홀수를 비트로 표현하면 가장 오른쪽 비트가 무조건 1이다. 그렇기 때문에 홀수는 더했을 때의 '올림'을 생각해야 한다. 1만 더해주어도 "최소 2개의 비트"가 달라지기 때문이.. 2022. 8. 16.
[스터디 후기] 프로그래머스 커뮤러닝 C++반 5기 후기 안녕하세요 기린입니다 :) 오늘은 제가 지난 6월달에 프로그래머스에서 진행한 커뮤러닝 클래스에 대한 후기를 남겨보도록 하겠습니다! https://school.programmers.co.kr/learn/courses/14030 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 먼저 커뮤러닝은 자료구조 & 알고리즘을 기본적으로 알고 있지만 효율성 테스트 케이스를 통과하지 못하는 분들을 위한 실력 UP 패키지 입니다 : ] 가장 중요한 점은 문제만 풀고 해설강의만 드는게 아니라, 푼 문제들을 동료들과 서로 리뷰해줌으로써 같이 성장해 나가는 과정이지요 또한 중간, .. 2022. 7. 6.
[알고리즘] 완주하지 못한 선수 안녕하세요 기린입니다 :=) 저는 요즘 프로그래머스에서 진행하고있는 [커뮤러닝/5기/C++] 코딩테스트 실력 UP 패키지: 문제 풀이 꿀팁과 실전 모의고사 with C++ 을 들으며 알고리즘 공부를 하고있는데요 내일 배움 카드로 수강하면 수강료가 3만원이고 수강 완료시 전액 환급해주는 아주 좋은 강의랍니다! 광고아님 https://programmers.co.kr/learn/courses/13557 그럼 바로시작해볼게요 :] '완주하지 못한 선수' 문제를 한번 풀어보도록 하겠습니다. 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들.. 2022. 6. 24.
[알고리즘-17] 이진트리의 구현과 순회(Traversal) 방식 안녕하세요 기린입니다 :) 오늘은 완전 이진트리가 아닌 이진트리를 구현하는 방법과 해당 이진트리를 탐색하는 방법인 순회 방식에 대해 알아보겠습니다. 기본적으로 가장 많이 사용되는 비선형 자료구조는 이진 트리(Binary Tree)입니다. 이진 트리는 트리 자료구조를 활용한 대표적인 예시로 데이터의 탐색 속도 증진을 위해 사용하는 구조입니다. 이전에 힙 정렬(Heap Sort)을 구현할 때 간단하게 이진 트리에 대해 다루어 본 적이 있습니다. 힙 정렬에서 완전 이진 트리 구조를 사용했다면 이번 시간에는 실제로 트리를 제대로 구현해 보겠습니다. 일단 실제 트리를 구현하기 위해 포인터(Pointer)를 이용해 특정한 루트(Root)에서 자식 노드로 접근하도록 하겠습니다. 이진 트리의 구조는 위와 같이 생겼습니.. 2022. 5. 26.
[알고리즘-16] 크루스칼 알고리즘(Kruskal Algorithm) 안녕하세요 기린입니다 :) 이번 시간에 배워볼 내용은 바로 크루스칼 알고리즘입니다. 크루스칼 알고리즘은 가장 적은 비용으로 모든 노드를 연결하기 위해 사용하는 알고리즘입니다. 다시 말해 최소 비용 신장 트리를 만들기 위한 대표적인 알고리즘이라고 할 수 있습니다. 예를들어 여러 개의 도시를 도로를 이용해 연결하고자 할 때 비용을 최소한으로 하고자 할 때 실제로 적용되는 알고리즘이죠 일단 용부터 정리해보겠습니다 노드 = 정점 = 도시 -> 그래프에서 동그라미에 해당하는 부분 간선 = 거리 = 비용 -> 그래프에서 선에 해당하는 부분 즉 아래의 그래프를 살펴보았을 때 노드의 갯수는 7개, 간선의 갯수는 11개 입니다. 크루스칼의 핵심 개념은 간선의 거리가 짧은 순서대로 그래프에 포함시키자 입니다. 일단 모든 .. 2022. 4. 28.
[알고리즘-15] Union-Find (합집합 찾기) 안녕하세요 기린입니다 :) 오늘은 합집합 찾기(Union-Find)에 대해 알아보도록 하겠습니다. Union-FInd는 대표적인 그래프 알고리즘입니다. 바로 '합집합 찾기'라는 의미를 가진 알고리즘인데요. 서로소 집합(Disjoint-Set) 알고리즘이라고도 부릅니다. 구체적으로 여러 개의 노드가 존재할 때 두 개의 노드를 선택해서, 현재 이 두 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘입니다. 위와 같이 여러 개의 노드가 서로 자유분방하게 존재한다고 생각해봅시다. 이와 같이 모두 연결되지 않고 각자 자기 자신만을 원소로 가지고 있을 때 아래 표와 같이 표현할 수 있습니다. 노드번호 1 2 3 4 5 6 7 8 부모노드번호 1 2 3 4 5 6 7 8 첫 번째 행은 '노드 번호'를 의미하고 두.. 2022. 4. 26.