파이썬 알고리즘 : 줄 서는 방법

2023년 12월 26일 알고리즘 문제풀이 문제 줄 서는 방법 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import math def solution(n, k): answer = [] arr = list(range(1,n+1)) while n>0: tmp = math.factorial(n-1) a = k//tmp k = k%tmp if k: answer.append(arr[a]) arr.pop(a) else: answer.append(arr[a-1]) arr.pop(a-1) n -= 1 return answer 순열에 정의를 알면 접근방식 자체는 그리 어렵지 않지만, 코드로 구현하는 게 꽤나 까다로웠다. 순열은 결국 앞에서부터 올 수 있는 경우의 수를 정해주고 곱하는 방식이다. 4명이 줄을 서는 방법은 4! = 4 x 3 x 2 x 1이다. 왜 이렇게 나오냐면, 맨 앞에 올 수 있는 후보는 4개 이고, 그 다음은 3개, 2개, 1개 이기 때문이다. ...

2023년 12월 26일 · 2 분 · 배준수

자료구조(1) 해시테이블

8일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.133 ~ p. 136, 예제 1.1~1.3 내용 정리 9 면접 문제 01 배열과 문자열 해시테이블 해시테이블(hash table)은 효율적인 탐색을 위한 자료구조 키(key)를 값(value)에 대응시킨다. 연결리스트(linked list)와 해시 코드 함수(hash code function)로 구현할 수 있다. 키와 값을 넣는 과정 키의 해시 코드를 계산한다. 키의 자료형은 보통 int 혹은 long. hash(key) % array_length와 같은 방식으로 해시 코드를 이용해 배열의 인덱스를 구한다. 배열의 각 인덱스에는 키와 값으로 이루어진 연결리스트가 존재한다. 키와 값을 해당 인덱스에 저장한다. 반드시 연결리스트릴 이용한다. 충돌 : 서로 다른 두개의 키가 같은 해시 코드를 가리키거나 서로 다른 두 개의 해시 코드가 같은 인덱스를 가리키는 경우 ...

2023년 9월 12일 · 3 분 · 배준수