자료구조 8

📑 코딩테스트 필수 자료구조

파이썬 VS 자바 1. 배열 (시간 복잡도) => O(1) 입력값의 크기와 무관하게 일정한 속도, O(c) => 상수 시간만큼의 복잡도언어 구분파이썬자바정의다양한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조동일한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조 (Primitive / Wrapper)선언list = []int [] arr = new int[]; ArrayList aList = new ArrayList();추가list.append(값) O(1)arr[idx] = 값;aList.add(값); O(n) : 배열이 꽉찬 경우 확장 및 복사삭제list.pop(idx) O(n) list.pop() 맨 뒤의 원소 삭제 O(1)arr[idx] = 0;aList.remove(idx or ..

📑 프로그래머스_스트림_day20

오늘은 프로그래머스 Level2로 분류된 문제를 풀이하되, 좀 쉬운 문제 3문제를 풀어보았다. 문제 자체는 크게 어렵지 않았고, 겸사겸사 stream을 연습하는 목적으로 풀이해 보았다. Sol 1> https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 번째 문제는 단순하게 최댓값과 최솟값을 구해서 리턴하는 문제이다. 본래라면 Arrays.sort를 사용하거나 배열의 크기를 고려하여 버블 혹은 swap을 사용한 정렬로 구할수도 있는 단순한 문제이다..

📑 프로그래머스_뉴스 클러스터링_day19

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘은 알고리즘 챌린지 19일 차이다. 오늘도 어제처럼 카카오 블라인드 채용 시험 문제를 가져왔다. 난이도는 중으로 분류되어 적당히 어려웠던 것 같지만, 시간 복잡도를 고려하지 않아도 될 정도로 조건의 범위가 작고, 처음 보는 개념에 대해서도 설명이 상세하게 나와있기 때문에 그대로 코드만 구현할 수 있다면 쉽게 풀 수 있을 것이다. 문제를 풀기 위한 핵심 키포인트는 아래와 같다. 교집합 수와 합집..

📑 프로그래머스_의상_day17

프로그래머스 알고리즘 챌린지 17일 차이다. 오늘도 level2에 분류된 자료구조 문제를 가져와 보았다. 문제를 읽다보니 분명히 풀었던 문제인 것 같은데, 안 푼문제로 분류되어 있어서 뭐지 하고 풀었다. 문제를 다 풀어보고 나니 취업준비 기간 때 같이 학원 다니던 친구가 질문했던 문제였었다는 게 떠올랐다. 그때 당시에는 생각보다 쉽게 풀이해서 설명해줬었는데 이번엔 그러지 않은 것을 보니 확실히 감이 많이 죽은 것 같다. https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. prog..

📑 프로그래머스_택배상자_day14

알고리즘 챌린지 14일 차이다. 사실 어제 포스팅을 했어야 했지만, 어제는 지방에 당일 출장을 갔다가 올라와서 바로 기절해 버렸다.. 아예 넘길 순 없으니 오늘은 문제 두 개를 풀고자 한다. 프로그래머스 Level2 택배상자 문제로 정답률은 55%인 준수한 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 택배가 나오는 메인 컨테이너 벨트는 FIFO구조로 나오게 되고, 택배를 트럭에 싣는 우선순위가 존재한다. 택배를 임시로 저장할 예..

📑 프로그래머스_귤 고르기_day12

알고리즘 챌린지 12일 차이다. 주말에 푹 쉬고 하니 확실히 상쾌하고 귀찮은 마음이 덜 생기는 것 같다. 목표를 향해 열심히 달려가는 것도 좋지만 역시 충분한 휴식이 병행되어야 한다는 점을 다시금 깨달았다. 오늘은 프로그래머스 Level2로 분류된 귤고르기 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제 또한 자료구조를 이용하면 쉽게 풀수 있는 문제로 최근에 풀었던 시소 짝꿍문제와 상당히 유..

📑 정렬_1202_보석 도둑

오늘도 정렬로 분류되는 알고리즘 문제를 풀어보도록 하자. 문제의 난이도가 골드 2로 올라와서 그런지 따져야 할 조건도 많고, 풀이도 떠올리기가 간단하지는 않았다. 기본 베이스는 정렬과 그리디 알고리즘이지만, 이번 문제는 우선순위 큐라는 자료구조를 적당히 잘 사용해서 풀어야 한다. https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 1. 문제 분석 보석의 수 N과 가방의 수 K의 최댓값이 ..

📑 그래프(Graph)의 종류

용어 설명 그래프(Graph) 노드와 간선을 하나로 모아 놓은 자료 구조 정점(Vertex) 노드라고도 하며, 정점에는 데이터가 저장된다. 간선(Edge) 링크라고도 하며, 노드간의 관계를 나타낸다. 인접 정점 (adjacent vertex) 간선에 의해 직접 연결된 정점 차수(degree) 무방향 그래프에서 하나의 정점에 인접한 정점의 수. 무방향 그래프에 존재하는 존재하는 정점의 모든 차수의 합 == 그래프의 간선의 수 * 2 진출 차수 (out-degree) 방향 그래프에서 사용되는 용어로, 현재 노드에서 외부로 향하는 간선의 수 방향 그래프에 있는 정점의 진입 차수 또는 진출 차수의 합 == 방향 그래프의 간선의 수 진입 차수 (in-degree) 방향 그래프에서 사용되는 용어로, 외부 노드에서 ..