뇌 가르기 59

정렬

정렬이란? - 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 - 공식처럼 사용 (이진 탐색의 전처리 과정 등) 선택 : O(N^2), 거의 사용 X 삽입 : O(N) ~ O(N^2), 정렬이 거의 된 경우 가장 빠름 퀵 : O(NlogN) ~ O(N^2), 이미 정렬이 된 최악의 경우가 N^2 계수 : O(N+K), N: 개수 K: 최대값 파이썬 기본 정렬 라이브러리: O(NlogN) 보장 1. 단순히 정렬 기법을 아는지 묻는 문제 (정렬 라이브러리 사용 시 가능) 2. 정렬 알고리즘의 원리를 묻는 문제 3. 빠른 알고리즘이 필요한 문제 (기존의 알고리즘에 구조적인 개선을 거쳐야함) tip. 별도의 요구사항이 있는 경우(데이터 한정, 동작 시간 단축), 계수 정렬 사용이 유리 1. ex) 위에서 아..

학/Algorithm 2023.03.04

[구현] 이코 실전문제

왕실의 나이트 입력 현재 나이트가 위치한 곳의 좌표 _ 8*8 좌표 평면: 행(1~8), 열(a~h) ex) a1 출력 나이트가 이동할 수 있는 경우의 수 1. 수평으로 두 칸 이동 후 수직으로 한 칸 이동 2. 수직으로 두 칸 이동 후 수평으로 한 칸 이동 3. 1, 2 두 가지 경우로 이동 가능하며, 좌표 밖으로는 나갈 수 없음. 이동할 수 있는 방향의 좌표들을 묶어 모든 경우의 수 반복 > python 더보기 더보기 import sys input_data = input() column = int(ord(input_data[0])) - int(ord('a')) + 1 row = int(input_data[1]) steps = [(-2, -1), (-2, 1), (2, -1), (2, 1), (-1, ..

습/코테 2023.03.03

[Greedy] 이코 기출문제

모험가 길드 입력 N(2 ≤ N ≤ 100,000) N명의 공포도(1 ≤ 공포도≤ N) 공백으로 구분 출력 공포도가 x인 모험가는 반드시 x명 이상으로 구성한 그룹으로 참여 가능할 때, 여행을 떠날 수 있는 그룹 수의 최댓값 출력. (모든 모험가를 그룹에 넣을 필요 없음) 그룹 수의 최댓값 -> 가장 공포도가 작은 사람들부터 그룹만들기 > python 더보기 더보기 import sys n = int(input()) data = list(map(int, input().split())) data.sort() result = 0 count = 0 for degree in data: count += 1 if count >= degree: result += 1 count = 0 print(result) > jav..

습/코테 2023.03.03

[Greedy] 이코 실전문제

큰 수의 법칙 입력 N(2 ≤ N ≤ 1,000) M(1 ≤ N ≤ 10,000) K(1 ≤ N ≤ 10,000) # K ≤ M 공백으로 구분 N개의 자연수(1 ≤ 자연수 ≤ 10,000) 공백으로 구분 출력 특정 인덱스에 해당하는 수가 최대 K번 연속할 수 있을 때, 주어진 자연수들을 M번 더하여 가장 큰 수를 출력. 반복되는 수열을 찾아 효율적으로 해결 할 수 있음. > python 더보기 더보기 import sys n, m, k = map(int, sys.stdin.readline().split()) data = list(map(int, sys.stdin.readline().split())) data.sort(reverse = True) first = data[0] second = data[1] c..

습/코테 2023.03.03