본문 바로가기
반응형

분류 전체보기50

[프로그래머스] 정렬 - H-Index(파이썬 문제 풀이) 문제 링크 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 프로그래머스 고득점 Kit 정렬의 마지막 문제 H-Index 입니다. 문제에 주어진 조건대로 우선 구현을 하고 효율성을 높여보려고 했는데, 구현하고 제출하니 통과가 되어버렸네요..! 저는 아래와 같은 방법으로 구현했습니다. 1. 인용된 논문 수의 최대값 만큼 리스트를 하나 만든다. 2. 1부터 인용된 논문 수의 최대값까지 반복문을 돌며 1이상 논문은 몇개, 2이상 논문은 몇개, 3이상 ... 을 반복한다. 3. 각 인덱.. 2021. 3. 18.
[프로그래머스] 정렬 - 가장 큰 수(파이썬 문제 풀이) 문제 링크 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 주어진 정수를 이어 붙여 가장 큰 수를 만들어내는 문제입니다. Level2 치고는 체감 난이도가 꽤 높았던 문제인 것 같습니다! 우선 입력 데이터인 numbers의 최대 길이가 100,000인 것으로 보아 상태 트리를 이용한 모든 경우의 수를 조합하는 방법은 아니라고 생각했습니다. 1. 파이썬에서 문자형으로 된 숫자를 비교할 때 자릿수에 상관없이 앞자리가 큰 수가 큰 것이다는 점을 활용해.. 2021. 3. 18.
[프로그래머스] 정렬 - K번째 수(파이썬 문제 풀이) 문제 링크 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 주어진 범위를 정렬한 뒤 K번째 수를 출력하는 문제입니다. 파이썬의 내장 함수를 사용해도 되지만 복습 차원에서 퀵 정렬을 사용해 문제를 풀이해 보았습니다 퀵 정렬을 구현하는 함수를 만들고, 입력받은 커맨드에 따라 원본 배열에서 범위를 추출하여 퀵 정렬 함수에 전달하고 정렬된 배열에서 k번 째(k-1) 데이터를 출력하도록 구성했습니다. 문제 풀이(파이썬) def Qsort(s, e): if s < e: pivot = tmp[e] pos = s for i in range(s, e): if tmp[i] < pivot: tm.. 2021. 3. 17.
[ 자료구조 ] 트리란?(이진 트리, 파이썬 트리 순회 방법, 이진 탐색 트리) 트리(Tree) 스택, 큐와 같은 선형 구조가 아닌 비선형 자료구조 계층적 관계를 표현한다. 일반적인 틀에서 삽입, 삭제 연산의 시간 복잡도 : O(logN) 트리의 구성 노드(Node) : 트리를 구성하는 각각의 요소 간선(Edge) : 각각의 노드를 연결하는 선 루트 노드(Root Node) : 트리 구조에서 최상위에 있는 노드 단말 노드(Terminal Node = Leaf Node) : 하위에 다른 노드가 연결되어 있지 않은 최하위 노드 내부 노드, 비단말 노드(Internal Node) : 단말 노드를 제외한 모든 노드로 루트 노드도 포함 루트 노드를 제외한 모든 노드는 단 하나의 부모 노드만을 갖는다. 방향성이 있는 비순환 그래프로 Loop나 Circuit이 없다. 루트에서 어떤 노드로 가는 .. 2021. 3. 16.
[ 자료구조 ] 선형 자료구조 - 스택, 큐, 덱 스택(Stack) LIFO(Last in First Out) 나중에 들어간 원소가 먼저 나온다. 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 구조 push : 데이터를 top 위치에 넣기 pop : 가장 최근에 푸시한 데이터가 나옴 stack underflow : 자료가 없을 때 pop 하면 발생하는 오류 stack overflow : 스택의 크기 이상 자료를 push 하면 발생하는 오류 삽입, 삭제의 시간 복잡도 : O(1) → 장점 큐(Queue) FIFO(First in First Out) 먼저 들어간 원소가 먼저 나온다. front : 데이터가 삽입(push)되는 곳 back : 제거(pop)되는 곳 삽입, 삭제의 시간 복잡도 : O(1) → 장점 덱(Deque) 양쪽 끝에서 입출력이 가능한 자료구조.. 2021. 3. 16.
[ 자료구조 ] 배열(Array) vs 리스트(List) - 특징, 차이 배열(Array) 데이터가 많아지고 그룹 관리의 필요에 따라 배열을 사용한다. 고정된 크기를 갖는 같은 자료형의 원소들이 연속적인(논리적 저장 순서와 물리적 저장 순서가 일치) 형태로 구성된 자료구조 인덱스에 따라 값을 유지하므로 원소가 삭제되어도 빈자리가 남게되어 메모리가 낭비된다. 처음 크기를 10으로 지정한다면 5개의 데이터만 저장하더라도 실제 배열의 크기는 10이다. 인덱스(index) : 각 원소의 번호로 0번부터 시작하며, 해당 원소에 접근한다. 데이터 갯수가 확실하게 정해져 있고, 접근이 빈번한 경우 배열이 효율적이다. cache hit 가능성이 커져 성능에 큰 도움이 된다. cache hit : CPU가 참조하고자 하는 메모리가 캐시에 존재하고 있는 경우 고정이고 연속적인 만큼 인덱스로 r.. 2021. 3. 15.
[ Network ] TCP/IP 동작 과정(데이터 송수신 과정) TCP/IP를 통해 송신자와 수신자 간 데이터를 주고 받을 때의 동작 과정입니다. 1. Client : Application (HTTP, SMTP, POP3, FTP) 클라이언트로부터 특정 주소로 요청이 들어오면 DNS 상에서 IP주소를 받아온다. 애플리케이션간 데이터를 주고받기 위해 필요한 정보를 HTTP 계층에서 HTTP 메시지를 작성 2. Client : Transport (TCP) HTTP 메시지를 패킷으로 나누고 애플리케이션을 나타내는 번호와 데이터 조합하기 위한 정보를 작성 3. Client : Network (IP) 전송 위치를 확인하며 송수신할 컴퓨터 주소와 불명인 경우 데이터를 파기하는 표시 등을 작성 4. Client : Data Link (Ethernet) 네트워크 종류에 맞춘 형식으.. 2021. 3. 15.
[ BOJ ] 백준 2805 - 나무 자르기(파이썬 문제 풀이) 문제 링크 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 이분 탐색 나무 자르기 문제 입니다. M미터의 나무의 값을 찾기위해 시작값과 끝값의 범위를 중간값을 기준으로 확장, 축소하며 M미터가 가능한 최소값을 찾았습니다. 문제 풀이(파이썬) import sys N, M = map(int, input().split()) tree = list(map(int, input().split())) res = 0 lt = 0 rt = max(tree) mid = 0 while lt+.. 2021. 3. 14.
[ BOJ ] 백준 2512 - 예산(파이썬 문제 풀이) 문제 링크 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 이분 탐색으로 풀 수 있는 예산 문제 입니다. 가능한 예산 중 최대값을 찾기위해 시작 값, 끝 값을 나누어 중간 값으로 범위를 확장, 축소하여 문제를 풀이했습니다. 문제 풀이(파이썬) N = int(input()) req = list(map(int, input().split())) M = int(input()) lt = 1 rt = max(req) res = 0 while lt mid: res_tmp += mid else: res_tmp += r.. 2021. 3. 14.
반응형