목록전체 글 (168)
Kim Seon Deok
https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 1.순열을 통해 문제를 풀기 위해 itertools 모듈의 permutations함수를 import 2.n과 hint를 통해 입력을 받음 3.1~9까지 문자열의 형태로 number리스트 생성 4.permutations함수를 통해 number리스트에서 만들어질 수 있는 모든 경우의 수를 example_리스트에 저장 5.입력받은hint 리스트중 0번째 인덱스만 뽑아내어 문자열로 변경 후 만들어진 새로..
힙 정렬 힙의 특성을 이용하여 정렬하는 알고리즘 힙에서 최댓값은 루트에 위치한다. 선택 정렬을 응용한 알고리즘 최댓값인 원소를 선택하는 시간 복잡도는 O(n), 힙 정렬에서 다시 힙으로 만드는 작업의 시간 복잡도는 O(logn) 힙 부모의 값이 자식의 값보다 항상 크거나 작다는 조건을 만족하는 완전 이진 트리 두 값의 대소 관계가 일정하면 된다. 부모와 자식관계는 일정하지만 형제 사이의 대소관계는 일정하지 않다. 루트를 삭제한 힙의 재구성 힙에서 루트를 꺼냄 루트 위치의 힙의 마지막 원소(가장 하단의 오른쪽에 위치한 원소)를 비어있는 루트자리로 이동 다음 단계에 있는 자식의 크기를 비교하여 부모의 값이 자식의 값보다 항상 커야 한다는 힙의 조건을 만족시키기 위해 더 큰 자식과 위치를 바꾸고 아래로 내려감..
퀵 정렬 일반적으로 사용되는 아주 빠른 정렬 알고리즘 피벗을 선택하여 나누기를 반복하며 모든 그룹이 1명씩 남으면 정렬이 완료된다. 피벗 : 그룹을 나누는 기준 피벗을 어떤 값으로 선택하느냐에 따라 배열을 나누는 것과 정렬하는 성능에 영향을 미친다. # 퀵 정렬 알고리즘 구현하기 from typing import MutableSequence def qsort(a: MutableSequence, left : int, right: int) -> None: """a[left] ~ a[right]를 퀵 정렬""" pl = left # 왼쪽 커서 pr = right # 오른쪽 커서 x = a[(left + right) // 2] # 피벗 (가운데 원소) while pl x : pr -= 1 if pl None: ..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 1.조합함수를 사용하기 위한 itertools 모듈 생성 2.짝수의 수 N과 N회 반복하여 길이가 N인 리스트를 리스트 e에 저장해 2차원 리스트 생성 3. 1~N까지 수를 possible_team리스트에 저장 4.start_team = possible_team의 절반(0번째 인덱스~ 절반 인덱스) link_team = possible_team의 절반(절반 인덱스~ 마지막 인덱스) 5. start_team 과 link..
https://www.acmicpc.net/problem/20436 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net sl,sr = list(input().split()) s =list(map(str,input())) left = [['q','w','e','r','t'], ['a','s','d','f','g'], ['z','x','c','v','']] right = [['','','','','','y','u','i','o','p'], ['','','','','','h','j','k','l'], ['',..