분류 전체보기

[학습 내용] 오늘은 힙에 대해서 학습했다. 1. 힙 힙은 완전 이진 트리의 일종으로 부모 자식 노드 사이에 특정 조건을 만족하는 자료구조를 말한다. 완전 이진 트리란 부모 노드 밑에 자식 노드가 최대 2개까지 있을 수 있고, 마지막 리프 노드를 제외한 모든 노드가 완전히 채워져 있는 구조를 말한다. 힙은 기준점에 따라서 최소 힙과 최대 힙으로 나눌 수 있는데, 다음과 같은 특징이 있다. 최대 힙은 모든 부모 노드가 그 자식 노드보다 크거나 같은 값을 가지는 특성을 가지고 있어 루트 노드는 전체 힙에서 가장 큰 값을 가지고 있다. 반대로 최소 힙은 부모 노드가 자식 노드보다 작거나 같은 특성을 가지기 때문에 루트 노드가 전체 힙에서 가장 작은 값을 가진다. 파이썬에서는 heapq 라이브러리를 활용해서 생..
[학습 내용]오늘은 알고리즘 및 자료구조의 입문 단계라고 할 수 있는 스택과 큐에 대해서 학습했다. 그중에서도 스택을 알아보자.1. 스택(Stack)스택은 '쌓는다' 라는 이름의 어원처럼, 먼저 입력한 데이터를 제일 나중에 꺼낼 수 있는 LIFO(Last In First Out)의 구조를 가진 자료구조이다. 일상 생활에서도 많이 볼 수 있는 형태인데, 곽티슈나 좁고 긴 바구니에 물건을 넣는다면 이런 구조를 지닐 것이다. 실제 프로그램 내부에서도 이런 구조를 지닌 대표적인 예는 우리가 함수를 형성하고 저장할 때, 함수가 메모리의 스택 영역에 실행 순서에 따라 차근차근 저장되고, 가장 나중에 호출된 함수부터 차례차례 해제된다. 이런 스택을 프로그램에서 차용하는 가장 큰 이유는 처음 실행했던 함수로 돌아가기 ..
[팀스터디에서 얻은 인사이트] 모든 문제를 푸는게 좋은게 아니라 정답률, 문제를 푼 사람 수 등 대중적으로 사람들이 많이 푼 알고리즘 문제에 대해서 먼저 고민하고 나서 심화 문제를 고려하는 것이 중요하다고 하셨다. 확실히 같은 알고리즘, 자료구조의 문제를 많이 풀 때도 위와 같은 우선순위를 두고 유형과 어느 정도의 정형화된 코드를 이해하고 나서 문제에 접근한다면 실전에 더 잘 풀 수 있다 싶다. 항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠입니다. IT 커리어 성장 코스 항해99, 개발자 취업부터 현직자 코스까지 항해99는 실무에 집중합니다. 최단기간에 개발자로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지. hanghae99.spartacodi..
[팀스터디에서 얻은 인사이트] 2차원 배열 자체의 개념을 아는 수준으로는 알고리즘 문제는 손도 못 댔던 것 같다. 그나마 쉬운 난이도 문제들에서도 꽤나 긴 시간을 잡아 먹었고, 알고리즘을 접근하는 방식에 대해서도 꽤나 고민이 많았다. 문제를 풀 때 효율을 먼저 고려하는 게 아니라 해결하는 게 먼저인 것을 잊지말자. 최적화는 구현하고 나서 하는거지 구현하지도 않고 고려하는 건 아닌 것 같다. 추후에 가능하면 문제를 다시 한 번 더 풀어보는 게 좋겠다. 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2..
[학습 내용] 문자열에 대해서 어느 정도 알고 있다고 생각했었는데, 풀다 보니 기초적인 부분에서도 실수가 많이 나와 반성하게 됐다. 오늘 풀었던 문제들도 도움이 됐지만 자주 나올 패턴은 회문 관련되서 나올 것 같다. 그 문제 위주로 확인해보자.
[팀스터디에서 얻은 인사이트] 중요한건 각 알고리즘이나 문제 장르에서 공식적으로 들어가는 풀이 방법이 있다. 그 방법을 확실히 인지하기만 해도 대부분의 알고리즘 문제는 큰 틀에서 벗어나지 않는다. 정확히는 코딩테스트에서 출제하는 문제들은 그 틀에서 벗어나는 문제는 잘 출제되지 않는다. 그 공식을 얻으려고 하자 [학습 내용] 백준 문제 N과 M 문제를 처음에는 멘토님이 가르쳐주시지 않았더라면 파이썬에 있는 itertools를 이용해서 그저 단순하게 순열과 조합으로 풀어버렸을지도 모른다. 하지만 분명하게 백트래킹 문제라고 인지를 시켜주시고 해답을 알려주셨는데 제대로 공부한 적이 없어 코드의 실행 과정을 이해하는데 애를 먹었다. 백준 15649 N과 M(1) 15649번: N과 M (1) 한 줄에 하나씩 문제..
[팀스터디에서 얻은 인사이트] 입력 함수의 중요성에 대해서 체감할 수 있었다. 알고리즘을 풀다가 반복문 내에서 입력을 받게 되는 상황이 생겼는데, 그때 값이 1000이 넘어가는 경우, input() 함수를 쓰게 되면 시간이 매우 지연되게 된다. 단순히 이런 일을 위해 sys.stdin.readline을 가능하면 사용하는게 좋다 정도로만 인지하고 있었는데, 이 문제에 한해서는 시간 차이가 10배 이상 나 시간 초과로 문제 해결을 실패하고 있었다. 하지만 다른 분들이 쓰신 코드를 보면서 왜 써야하는지, 시간 차이가 구체적으로 얼마나 나는지 알 수 있어 많이 배운 것 같다. 멘토분께서 멘토링해주시면서 코드를 보면서 말씀하신 핵심 2가지는 하나는 쓸데없이 메모리를 낭비하지 않게 사용하지 않는 값에 대해서는 de..
팀스터디에서 얻은 인사이트 팀스터디에서는 다른 사람들의 코드가 어떤 생각을 가지고 어떤 방향성으로 코드를 최적화했었는지 알 수 있었다. 오늘 문제의 난이도는 평이해서 코드 자체도 대부분 유사했지만 디테일한 부분에서 약간씩 다른 부분들이 흥미로웠다. 멘토님과 함께한 멘토링에서는 알고리즘 스터디를 어떻게 해야하고, 코딩 테스트가 정확히 어떤 걸 중심으로 학습해야 되는지 알 수 있었다. 단순히 알고리즘을 학습하고 푸는 것만이 유효한 것이 아니라, 코딩테스트를 보게 될 환경에 미리 적응해볼 수 있도록 주마다 하는 대회나 아레나 같은 것들도 알려주셔서 지속적으로 목표를 가지고 성장할 수 있는 방법과 동기부여를 주셔서 감사했다 [학습 내용] 파이썬의 기본 입력 input() 파이썬에서 주로 사용하는 입력 함수로, ..
solitude12
'분류 전체보기' 카테고리의 글 목록 (6 Page)