목록Algorithm/기타 공부 (13)
minzzl
안녕하세용 오늘부터 프로그래머스 코딩테스트 고득점 kit 부분을 하나씩 정리해나가겠습니당 ! 코테 공부는 이것부터 시작하면 된다는게 맞나욤 ••• https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각설하고 ... 해시(Hash) 해시는 데이터를 다루는 기법 중의 하나로, 검색과 저장을 아주 빠르게 하는 자료구조입니다. 데이터를 저장할 때 key-value 형태로 데이터가 존재하고, key 값이 배열의 인덱스로 저장되기 때문..
작성예정 --
지난 번, 빠른 입력을 위해 sys 모듈을 import 하는 방법을 알아보았습니다. 그런데 더 간단하고 쉬운 방법을 알게되어 소개해볼까합니다. 파이썬으로 알고리즘 문제를 푸는 것이, 구현에 공을 들이지 않아도 된다라는 장점도 있지만, 자꾸만 시간초과 문제로 골머리를 앓게 만드는 것 같습니다 . . .^^ 서칭을 해보니 다음과 같은 템플릿을 사용하면 이 문제를 해결 할 수 있었습니다. import sys, os, io, atexit input = lambda: sys.stdin.readline().rstrip('\r\n') stdout = io.BytesIO() sys.stdout.write = lambda s: stdout.write(s.encode("ascii")) atexit.register(lamb..
단순히 몇줄을 입력받는 경우에는 input() 을 사용하면 됩니다. 그러나 연속적으로 여러줄을 입력을 받아야하는 경우는 다릅니다. 시간 초과가 발생할 수 있기 때문입니다. 따라서 최대한 빠르게 입력을 받아야만 합니다. 그 때 사용하는 것이 sys 라이브러리에 정의되어있는 sys.stdin.readline() 입니다. 사실 기존에는 input() 만으로 문제를 푸는데 딱히 지장이 없었습니다만, 백준의 2751 문제를 접한 후 빠른 입력을 통해 시간 초과 문제를 해결해야만 했습니다.. sys.stdin.readline() 사용법 input()보다는 sys.stdin.readline()를 사용하면 더 빠른 입력이 가능합니다. 아래의 다양한 예제들로 익혀봅시다. 한 개의 정수를 입력 받는 경우 import sy..
이 글에서는 선택 정렬과 마찬가지로 몹시 직관적인 버블 정렬(Bubble Sort)에 대해서 알아보겠습니다. 버블 정렬(Bubble Sort) 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘. 1 10 5 8 7 6 4 3 2 9 1 10 5 8 7 6 4 3 2 9 1 5 10 8 7 6 4 3 2 9 1 5 8 10 7 6 4 3 2 9 1 5 8 7 10 6 4 3 2 9 1 5 8 7 6 10 4 3 2 9 1 5 8 7 6 4 10 3 2 9 1 5 8 7 6 4 3 10 2 9 1 5 8 7 6 4 3 2 10 9 1 5 8 7 6 4 3 2 9 10 ... 위와 같은 방식으로 1차 버블 정렬을 끝나면 가장 큰 수가 가장 뒤로 가게됩니다. 즉 가장 큰 수의 정렬이 확정되고, 이후 이를 제외한..
이 글에서는 정렬 알고리즘 중 가장 직관적인 선택 정렬(Selection Sort)에 대해서 알아보겠습니다. 선택 정렬(Selection Sort) 대상 범위에서 최솟값을 찾아 그 값과 범위의 맨 앞에 있는 값을 서로 바꾸는 과정을 반복하는 정렬 기법. (해당 과정이 한 번 끝날 때마다 범위 안의 맨 앞에 있는 값은 정렬이 끝났으므로 정렬 대상 범위에서 제외합니다.) 이해를 돕기 위해 아래의 예시를 통해 설명해보겠습니다. 이 때 굵게 표시 된 부분은 이미 정렬이 끝난 것을 의미합니다. 1 10 5 8 7 6 4 3 2 9 1 10 5 8 7 6 4 3 2 9 1 2 5 8 7 6 4 3 10 9 1 2 3 8 7 6 4 5 10 9 1 2 3 4 7 6 8 5 10 9 1 2 3 4 5 6 8 7 10 ..