목록이것이 코딩테스트다 (35)
honey_pot
전자 매장에 부품이 N개 있다. 각 부품은 정수 형태의 고유한 번호가 있다. 어느 날 손님이 M개 종류의 부품을 대량으로 구매하겠다며 견적서를 요청했다. 손님이 문의한 부품 M개 종류가 가게 안에 모두 있는지 확인하는 프로그램을 작성하고 있으면 yes, 없으면 no를 출력하라 입력 조건 첫째 줄에 정수 N이 주어진다. (1
순차 탐색 (Sequential Search) 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용 리스트 내에 데이터가 아무리 많아도 시간만 충분하다면 항상 원하는 데이터를 찾을 수 있다. 리스트에 특정 값의 원소가 있는 지 체크할 때 리스트 자료형에서 특정한 값을 가지는 원소의 개수를 세는 count() 메서드 내부에서 사용 O(N) # 순차 탐색 소스코드 구현 def sequential_search(n, target, array): # 각 원소를 하나씩 확인하며 for i in range(n): # 현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: return i + ..
A와 B 두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 이때 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 바꿔치기 연산을 수행할 수 있으며, 최대 K번의 바꿔치기 연산을 수행할 수 있다. 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록하는 것이다. 입력 조건 첫 번째 줄에 N, K가 공백으로 구분되어 입력된다. ( 1
N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. 입력 조건 첫 번째 줄에 학생의 수 n이 입력된다. (1
sorted() 퀵 정렬과 동작 방식이 비슷한 병합 정렬을 기반으로 만들어졌다. 병합 정렬은 일반적으로 퀵 정렬보다 느리지만 최악의 경우에도 시간 복잡도 O(NlogN)을 보장한다. sorted() 함수는 리스트,딕셔너리 자료형 등을 입력받아서 정렬된 결과를 출력한다. 집합 자료형이나 딕셔너리 자료형을 입력받아도 반환되는 결과는 리스트 자료형이다. array = [7, 6, 9, 0, 3, 1, 6, 2, 4, 8] result = sorted(array) print(result) sort() 리스트 변수가 하나 있을 때 내부 원소를 바로 정렬할 수 있다. array = [7, 6, 9, 0, 3, 1, 6, 2, 4, 8] array.sort() print(array) sorted()와 sort()를 ..
정렬 (Sorting) 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 데이터를 정렬하면 이진 탐색이 가능해진다. 선택 정렬 (Selection Sort) 무작위의 데이터에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정 가장 작은 데이터를 앞으로 보내는 과정을 N - 1 번 반복하면 정렬이 완료된다. O(N^2) 느린 편 # 선택 정렬 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i + 1, len(array)): if array[min_index] > array[j..
N x M 크기의 직사각형 형태의 미로에는 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 현재 위치는 (1, 1) 이고 미로의 출구는 (N,M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 이때 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 이 때 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하시오. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 조건 첫째 줄에 두 정수 N, M ( 4 = m: continue # 벽인 경우 무시 if graph[nx][ny] == 0: continue # 해당 노드를 처음 방문하는 경우에만 최단 거리 기록 if graph[nx][ny] == 1: graph[n..