티스토리

Readerr
검색하기

블로그 홈

Readerr

readerr.tistory.com/m

Readerr 님의 블로그입니다.

구독자
2
방명록 방문하기

주요 글 목록

  • 알고리즘을 배우는 이유와 효과 알고리즘 지식이 왜 필요한가? 바로 논리적인 사고력을 기르기 위해서입니다. 누군가는 알고리즘을 실무에 가서 전혀 도움이 되지 않는 지식이라고 말하기도 합니다. 사실 그 말들이 아예 틀린건 아닐 수 있어요. 알고리즘에서 배우는 여러 기법들이 실제 실무에 가서 쓰이는건 절대 보편적이지는 않긴 해요. 들어간 회사의 주요 서비스에 따라, 들어간 회사가 소위 말해 얼마나 좋은 회사이냐에 따라 알고리즘 기법을 몇년간 아예 쓰지 않을 수 있긴 해요. 그럼에도 불구하고 많은 기업에서 알고리즘을 중요하게 생각하는 이유가 바로 앞서 말씀드렸던 논리적인 사고력이에요. 알고리즘은 배우다 보면 천재이거나 이미 아는 문제가 아닌 이상 문제를 해결하는 방법에 가장 큰 시간을 투자해야 해요. 해결하는 방법을 명확하게 설정하지 못하고.. 공감수 0 댓글수 0 2023. 6. 28.
  • 알고리즘 전체 요약 사전 지식 -빅오 표기법 -가장 기본적인 시간 복잡도 계산 방법 -정렬 알고리즘 지식(버블 정렬~퀵 정렬, 병합 정렬 등) -자료구조(리스트, 스택, 힙 등) -그외 여러 알고리즘 기법들에 대해 구현은 못 해도 개념은 알고 있는 정도(Brute-force 등) 알고리즘 종류 이전에 들었던 알고리즘 강의의 선생님께서는 실제 대기업 문제 출제 경험까지 있으신 분이었습니다. 그분의 말씀으로는, 단 4개의 알고리즘 기법을 제대로 알고 있으면 대회 수준이 아닌 코딩 테스트 기준으로는 모든 기업에서 출제되는 문제를 풀 수 있다고 말씀하셨습니다. 저 또한 그렇게 배웠기 때문에 4개의 알고리즘에 대해서만 정리하는 글을 작성해 보겠습니다. 링크를 통해 알고리즘을 학습해 주시기를 바랍니다. 최대한 이해하시기 쉽도록 노력하.. 공감수 0 댓글수 0 2022. 12. 21.
  • 프로그래머스] Level2 - 롤케이크 자르기 링크 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 (자세한 내용은 링크에 있는 문제를 참고하세요. 저는 풀이에 필요한 설명만 다룹니다.) 아래와 같은 문자열이 주어진다고 가정하자. [1, 2, 1, 3, 1, 4, 1, 2] 만약 절반을 자른다면 배열은 다음과 같이 두 배열로 나올 것이다. a = [1, 2, 1, 3] b = [1, 4, 1, 2] a배열에 서로 다른 숫자는 1, 2, 3로 3개이며, b배열에 서로 다른 숫자는.. 공감수 0 댓글수 0 2022. 11. 28.
  • 프로그래머스 Level2] 숫자 카드 나누기 (Python) 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 지문이 적지는 않네요. 프로그래머스에서는 영희와 철수라고 했지만, 편의상 간단하게 말씀드리자면 "배열 a, b가 있고, 특정 값(정수) c가 있을 때, a의 모든 값을 c로 나눌 수 있으며, b의 모든 값을 c로 나눌 수 없는 c의 최댓값 또는 그 반대의 값을 찾아라"입니다. 예를 들어볼게요. a = [3, 6, 9] b = [4, 10] 이 상황에서 특정 값을 3으로 둔다.. 공감수 0 댓글수 0 2022. 11. 27.
  • [Python] 이진 탐색 알고리즘의 가장 쉬운 설명 들어가며 이분 탐색을 공부하신다면 알고리즘의 기초적인 부분은 알고 있으시다고 가정하겠습니다(참고로 '이진 탐색 = 이분 탐색'입니다). 빅오 표기법과 버블 정렬을 모르는데 이분 탐색을 공부할 이유는 없으니까요. 이 글은 알고리즘의 가장 기초부터 알려드리는 글이 아니며, 곧 적을 아래의 사전 지식들을 완벽하게는 아니지만 알고 있다고 가정합니다. 알고리즘의 기초 개념부터 천천히 말씀드리는 것이 아닌, 이미 지식은 있지만 코딩 테스트 문제를 막상 잘 풀지 못하는 분이 코딩 테스트에 합격하기 위한 글입니다. 이진 탐색을 배우기 위해 필요한 사전 지식은 다음과 같습니다. 사전 지식 -빅오 표기법 -가장 기본적인 시간 복잡도 계산 방법 -정렬 알고리즘 지식(버블 정렬~퀵 정렬, 병합 정렬 등, 퀵/병합 정렬 구현은.. 공감수 0 댓글수 0 2022. 11. 18.
  • 자료구조의 전체 요약 자료구조 자료구조에 대한 기초 지식이 거의 없으시다면, 이 링크에서 학습하시는 것을 추천드립니다. Array vs LinkedList 둘 다 컴퓨터 메모리 상에 나란히 저장되어 있는 자료구조 이지만, Array의 크기는 정적, LinkedList의 크기는 동적입니다. 즉, Array는 한 번 배열 크기를 정했으면 배열을 다시 재정의하지 않는 한 크기가 바뀌지 않는다는 것이고, ArrayList는 처음 선언 시 일정 크기를 잡아주기는 하지만, 그 크기를 초과한다고 한들 재정의할 필요 없이 노드의 개수를 늘려 연결해주면 됩니다. 또한, Array는 특정 인덱스에 접근. 즉, 조회시 O(1)의 시간 복잡도를 가지며, 삽입과 삭제 후 값을 앞으로 한 칸씩 당겨오기 위해서는 O(N)의 시간이 걸립니다. Array.. 공감수 0 댓글수 0 2022. 11. 14.
  • 12. 기타 알고리즘 공감수 0 댓글수 0 2022. 11. 5.
  • 11-3. 그래프 공감수 0 댓글수 0 2022. 11. 5.
  • 11-2. 그래프2 공감수 0 댓글수 0 2022. 11. 4.
  • 11-1. 그래프1 공감수 0 댓글수 0 2022. 11. 4.
  • 10. 동적 계획법(DP), 그리디(Greedy) 알고리즘 공감수 0 댓글수 0 2022. 11. 4.
  • 9. DFS, BFS, 미니맥스 공감수 0 댓글수 0 2022. 11. 4.
  • 8. 트라이, 공간분할 트리 공감수 0 댓글수 0 2022. 11. 4.
  • 7. Tree (이진탐색 트리, Red-Black 트리) 공감수 0 댓글수 0 2022. 11. 4.
  • 6. 암호화 공감수 0 댓글수 0 2022. 11. 4.
  • 5. 해시(Hash) 알고리즘 공감수 0 댓글수 0 2022. 11. 4.
  • 4. 정렬 알고리즘 공감수 0 댓글수 0 2022. 11. 4.
  • 3-4. 탐색 알고리즘 공감수 0 댓글수 0 2022. 11. 4.
  • 3-3. P vs NP 문제 공감수 0 댓글수 0 2022. 11. 4.
  • 3-2. Brute-force 알고리즘 공감수 0 댓글수 0 2022. 11. 4.
  • 3-1. 재귀함수 공감수 0 댓글수 0 2022. 11. 4.
  • 2. 알고리즘의 효율성 및 기초 자료구조 공감수 0 댓글수 0 2022. 11. 4.
  • 1. Algorithm 과목 소개 공감수 0 댓글수 0 2022. 11. 4.
  • 자료구조 학습) 5. 비선형 자료구조 개요 안녕하세요, Readder입니다. 이번에는 비선형 자료구조에 대해서 배워보겠습니다. 자료구조를 처음 접하시는 많은 분들이 선형 자료구조까지는 힘들었지만 놓지 않고 잘 따라오시다가, 비선형 자료구조를 배우기 시작할 때 놔버리시는 경우가 많다고 들었습니다. 맨 처음 비선형 자료구조를 접할 때는 이전과는 다른 저장 방식에 당황스러우실 수 있어서, 저 나름 이런 패턴을 통해 접근하는 게 좋다고 생각합니다. 1. 코드로 어떻게 구현될지에 대한 생각을 완전히 배제하고 저장 방식만 이해한다. 2. 코드를 제외하고 저장 방식에 대해서 아무 도움 없이 혼자서 그려본다. 3. 코드로 어떻게 구현될지를 생각하며 글을 처음부터 다시 본다. 4. 직접 구현할 수 있다면 좋겠지만, 그렇지 못할 경우 코드를 보고 따라하며 구.. 공감수 0 댓글수 0 2022. 4. 18.
  • 자료구조 학습) 4. 선형 자료구조 개요 안녕하세요, Readder입니다. 지난번에 자료구조를 큰 틀에서 나누어 어떤 종류가 있다는 것을 설명드렸습니다. 일렬로 나란히 저장되는 자료구조를 선형 자료구조, 그렇지 않고 데이터가 여러 갈래로 뻗어 나가는 것이 비선형 자료구조라고 말씀드렸습니다. 오늘은 그중에서도 대표적인 선형 자료구조들에 대해서 소개드리고자 합니다. 지난 챕터에서 말씀드렸다시피, 각 자료구조들이 어떤 방식으로 저장하는지, 활용도는 어디에 쓰이고 시간 복잡도는 얼마인지 구분하는 데에 초점을 맞추세요. 또, 한 번에 이해가 안 가고, 직접 구현하실 때 막상 구현하려니 감이 안 잡히실 수 있어요. 원래 자료구조와 이후에 학습하실 알고리즘은 한 번에 이해하기 쉽지 않기 때문에 너무 한 번에 모든 것을 이해하시려고 하기보다는 며칠에 나.. 공감수 0 댓글수 0 2022. 4. 18.
  • 자료구조 학습) 3. 자료구조의 종류와 특징 개요 안녕하세요, Readder입니다. 이전에 말씀드렸듯이, 자료구조는 간단히 말해서 데이터를 저장하는 공간이에요. 현실 세계로 예로 들자면 책을 보관하는 도서관, 옷들을 보관하는 옷장처럼 프로그래밍에서 어떤 데이터를 저장하기 위한 공간으로 자료구조라고 하는 거죠. 다만, 우리는 프로그래머로서 데이터들을 대충대충 저장하는 것이 아니라, 올바른 용도에 좋은 효율로 저장해야죠. 그리고 이미 똑똑한 선배 프로그래머, 관련 학자 분들이 정립한 자료구조가 있고, 일반적으로 이 목록들을 자료구조라고 합니다. 그러니까, 자료구조는 정의상으로는 데이터를 저장하는 공간이지만, 실제 사람들이 자료구조를 아느냐고 물을 때는 학자와 프로그래머들이 대표적으로 정의한 자료구조들에 대해 아느냐고 묻는 거죠. 자료구조의 종류와 특징.. 공감수 0 댓글수 0 2022. 3. 4.
  • 자료구조 학습) 2. 자료구조를 배우기 위한 전반 지식 안녕하세요, Readder입니다. 이전에는 자료구조란 어떤 것이고, 왜 자료구조라는 것이 필요하고, 왜 우리가 알아야 하는지에 대해 간단하게 정리해 보았습니다. 이번에는 자료구조 기초. 즉, 자료구조를 이해하기 위해 반드시 알아야 할 사항들에 대해서 정리해 보고, 다음 챕터부터는 자료구조에 대해 실질적으로 학습을 진행해보고자 합니다. 자료 구조의 예시와 그 자료구조를 하나 하나 뜯어보기 전에, 제가 생각하기에는 다음과 같은 지식이 필요합니다. 1. 하나의 언어에 대한 전반적인 지식 2. 빅오 표기법과 복잡도 이에 대해 하나씩 설명해보도록 하겠습니다 1. 하나의 언어에 대한 전반적인 지식 첫 언어를 어떤 것으로 시작하셨든 상관 없습니다. C, C++, Java, Python 등 많은 프로그래밍 언어가 있고.. 공감수 0 댓글수 0 2022. 1. 14.
  • 빅오(Big-O) 표기법과 시간 복잡도의 의미와 필요성 안녕하세요. Readerr입니다. 자료구조, 알고리즘 등 많은 부분에서 반드시 알아야 할 것이, "그래서 시간 복잡도는 얼마인가?"입니다. 면접에서 어떤 자료구조의 시간 복잡도는 어떻게 되는지 물어보는 경우도 많고, 알고리즘 문제를 풀 때도 특정 시간 복잡도 내에 풀어야 하는 경우가 많죠. 그렇다면 이 '시간 복잡도'가 무엇이냐. 말 그대로 "특정 작업을 하는데에 얼마만큼 시간이 걸리느냐"입니다. 그러나 일반적으로 '몇 회의 작업을 하느냐'라는 의미로 보는 것이 더 쉽겠네요. 빅오 표기법 시간 복잡도에 사용되는 대표적인 개념은 바로 빅오(Big-O) 표기법이에요. 어렵게 생각하실 거 없이, 변수들 중 최고차항만 계산하겠다는 겁니다. 예를 들어 'x² * 2x * 3'이라는 계산식이 있다고 가정했을 때, .. 공감수 4 댓글수 0 2021. 11. 9.
  • Java] 알고리즘 문제 풀이 - 조이스틱 문제 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "JAZ"를 만들 .. 공감수 0 댓글수 0 2021. 9. 16.
  • 자료구조 학습) 1. 자료구조를 배우기 전 자료구조 학습의 시작 안녕하세요. 보통 프로그래밍 언어를 1~2개 익히시고, 조금 다뤄본 뒤에 '다음엔 뭐 공부해야 하지?'라고 하면 나오는 게 아마 대부분 자료구조 및 알고리즘일 것입니다. 자료구조 및 알고리즘은 괜찮은 기업들의 코딩 테스트를 위해서 필수적으로 익히셔야 할 내용입니다. 굳이 취업이 아니더라도, 프로그래머를 평생 직업으로 삼고자 한다면, 언젠가 반드시 알아야 할 사항이니 이번 기회에 꼭 익히시길 바랍니다. 사람에 따라 다르긴 하겠지만, 저 같은 경우에는 프로그래밍 언어를 익히고 충분히 활용해보지 않았는데 자료구조 및 알고리즘을 배울 때 조금 어렵긴 했으나, 그나마 정리된 개념들을 쉽게 다루고자 노력하려고 합니다. 참고로, 이 글에서는 자료구조의 깊은 부분은 제외하고 필수적으로 알아야 할 .. 공감수 0 댓글수 0 2021. 9. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.