본문 바로가기

알고리즘17

[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.
[알고리즘-14] 깊이 우선 탐색(DFS) 안녕하세요 기린입니다 :) 오늘은 지난 시간에 이어 깊이 우선 탐색(Depth-Frist Search)에 대해 알아보도록 하겠습니다. 먼저 깊이 우선 탐색이란 말 그대로 보다 깊은 것을 우선적으로 탐색하는 알고리즘입니다. 맹목적으로 각 노드를 탐색할 때 주로 사용되죠. 너비 우선 탐색과는 다르게 큐(Queue)를 사용하지 않고 스택(Stack)이 사용됩니다. 그리고 굳이 스택을 사용하지 않아도 구현이 가능하다는 특징이 있습니다. 컴퓨터는 구조적으로 항상 스택의 원리를 사용하기 때문입니다. DFS는 맨 처음에 시작 노드(Start Node)를 스택에 삽입하면서 시작합니다. 또한 그와 동시에 시작 노드를 방문했다고 알리는 '방문 처리'를 해주도록 합니다. 방문 처리는 파란색으로 해주도록 하겠습니다. 이제는 .. 2022. 4. 25.
[알고리즘-13] 너비 우선 탐색(BFS) 안녕하세요 기린입니다 :) 오늘은 배울 알고리즘은 바로 너비 우선 탐색(Breadth-Frist Search, BFS)은 탐색할 때 너비를 우선으로 하여 탐색을 수행하는 탐색 알고리즘 입니다. 특히 '맹목적인 탐색'을 하고자 할 때 사용할 수 있는 탐색 기법입니다. 너비 우선 탐색은 '최단 경로'를 찾아준다는 점에서 최단 길이를 보장해야 할 때 많이 사용합니다. 준비물은 큐(Queue)인데요 아래와 같이 큐와 그래프를 준비해보도록 합시다. BFS는 맨 처음에 시작 노드(Start Node)를 큐에 삽입하면서 시작합니다. 또한 시작 노드를 방문 했다고 '방문 처리' 해주도록 합니다. 방문 처리는 파란색으로 해주도록 하겠습니다. 이제 BFS는 다음과 같은 간단한 알고리즘에 따라서 작동합니다. 1. 큐에서 하.. 2022. 4. 22.