전체 글 682

[CodingTest] 백준 10814번 나이순 정렬 : 단어정렬 - 퀵, 병합, 힙정렬

문제) 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 ) 퀵정렬, 병합정렬, 힙정렬로 풀었다. 버블정렬은 시간초과가 발생한다. 파이썬은 리스트에 중복된 값을 제거할 때, 조건문에 not in 연산자를 사용하면 된다. 나는 이를 힙정렬 풀이 때 알게 되어 힙정렬에서 not in 연산자를 이용하여 풀었다. - 퀵정렬 풀이 # 입력 n = int(input()) input_list = [] for i in range(n) : input_list.append(input()) # 퀵소트 함수 def ..

문제풀이 2023.04.09

[python] 백준 2750번 수 정렬하기1 : 힙정렬(heap sort)

문제) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘) [알고리즘] 힙 정렬 ( Heap Sort ) 힙 정렬( Heap Sort )은 성능 좋은 정렬 알고리즘이지만 원리를 이해하기 쉽지 않다. 그 이유는 완전 이진 트리를 이용하기 때문이다. [자료구조] 완전이진트리 배열에 저장하기 완전 이진 트리를 lordofkangs.tistory.com 힙정렬은 힙트리를 이용한 정렬이다. 힙트리는 두 가지 조건이 충족되어야 한다. 1) 완전이진트리여야 한다. 2) 부모는 반드시 자식보다 커야 한다. ( 부모는 반드시..

문제풀이 2023.04.08

[python] 백준 2750번 수 정렬하기1 : 병합정렬(merge sort)

문제 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘 [JAVA] 백준 2751번 수 정렬하기2 : 병합 정렬( Merger Sort ) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. lordofkangs.tistory.com 위 알고리즘을 사용하여 풀었으나, 파이썬의 장점을 살리지 못한 풀이가 되었다. 파이썬은 리스트를 생성하..

문제풀이 2023.04.07

코드 청킹 연습하기(1)

코드 청킹 연습 코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 lordofkangs.tistory.com 위 포스팅을 토대로 청킹연습을 해보려고 한다. 코드베이스 def sequential_search(n, target, array) : for i in range(n) if array[i] == target: return i + 1 input_data = input().split() n = int(input_data[0]) target = input_data[1] array = input().split() print(sequential_search(n,tar..

후기/도서후기 2023.04.06

[python] 백준 2750번 수 정렬하기1 : 퀵소트(QuickSort)

문제) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘) [알고리즘] 퀵 정렬 (Quick Sort) 퀵 정렬(Quick Sort)은 이름 그대로 정렬을 빠르게 하는 알고리즘이다. 그러나 버블정렬에 비해 빠를 뿐, 이름만큼 가장 빠른 정렬 알고리즘은 아니다. 퀵 정렬(Quick Sort) 알고리즘이란? 정렬 알고리 lordofkangs.tistory.com 위 개념은 JAVA언어로 구현되어 있는데 파이썬 언어로 바꾸어 실행한 결과, 메모리초과가 발생했다. 원인은 파악하는 중이다. 그래서 원리는 같지만 조금 ..

문제풀이 2023.04.06

코드 청킹 연습

코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 lordofkangs.tistory.com 지난 포스팅에서는 코드를 신속하게 읽기 위한 방법으로 청크(Chunk)에 대해서 알아보았다. 많은 사람이 코드를 많이 작성해보는 것으로 프로그래밍을 학습하지만 효과적인 방법이 아닐 수 있다. 개발자는 실제로 코드를 작성하는 것보다 보는 경우가 더 많다. 그러므로 코드를 청킹하여 신속하게 파악하는 방법을 의도적으로 연습할 필요가 있다. 1. 코드선정 과거에 작성했던 코드를 하나 선택한다. ( 잘 아는 코드여도 ..

후기/도서후기 2023.04.05

코드 표식 파악 연습

코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 lordofkangs.tistory.com 지난 포스팅에서 코드를 신속하게 읽기 위한 방법 에 대해서 알아 보았다. 이번 포스팅에서는 표식(Beacon) 파악 연습에 대해서 다루어보겠다. 표식(Beacon) 숙련된 개발자는 코드를 읽고 이해할 때 표식을 많이 이용하지만 초급 개발자는 그렇지 않다. 표식파악연습이란, 변수명, 주석, 메소드명에서 힌트를 얻어 코드가 어떤 기능을하는지를 파악하는 연습이다. def print_in_order(root): if..

후기/도서후기 2023.04.05

[python] 백준 2750번 수 정렬하기1 : 버블 정렬(BubbleSort) 향상시키기

문제 ) 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 알고리즘) [알고리즘] 버블정렬 향상 시키기 버블정렬은 가장 쉽고 이해하기 쉬운 정렬이다. 그러나 시간복잡도가 O(n2)이어서 효율이 좋지 않다. 7개의 수를 일차원 배열에 저장하였다. 이제 버블정렬을 사용하여 오름차순으로 바꾸어 보자 lordofkangs.tistory.com 코드) 1) 교환횟수 카운트하여 버블정렬 향상시키기 N = int(input()) sortArr = [] for i in range(N) : sortArr.append(int(input..

문제풀이 2023.04.05

[ DFS ] 음료수 얼려먹기

음료수 얼려 먹기 문제 N × M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. 다음의 4 × 5 얼음 틀 예시에서는 아이스크림이 총 3개가 생성된다 입력 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다. (1 = maxY : return False else : return True # DFS 알고리즘 구현 함수 def dfs(x, y) : visited[x][y] = True # 방문처리 if not validateIndex(x,y) : r..

문제풀이 2023.04.05

코드 신속하게 읽는 방법 - 청크(Chunk)

코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 용량에 제한이 있다. 코드에 혼란을 느끼는 이유(2) 코드에 혼란을 느끼는 이유(1) 코드를 보다보면 혼란에 빠질 때가 있다. 개발자가 코드를 보며 혼란에 빠지는 경우는 3가지이다. 1. 지식의 부족 2. 정보의 부족 3. 처리능력의 부족 지식의 부족 2 2 lordofkangs.tistory.com ( STM의 자세한 내용은 위 포스팅 참고바랍니다. ) 우리가 생소한 코드를 볼 때, 단기로 기억할 수 있는 데이터의 양과 시간은 정해져있다. 컴퓨터도 단기기억장치인 RAM의 용량에 따라 컴퓨터의 처..

후기/도서후기 2023.04.04