본문 바로가기

알고리즘9

key와 lambda를 이용한 정렬 리스트를 보면 [[키,값],[이름,점수],[상품,가격],[단어(단어길이]] 이런 식으로 된 값들을 정렬하라는 문제들을 확인 할 수 있습니다. 하지만 파이썬을 이용하면 이러한 문제들은 key와 lambda를 이용해서 아주 쉽게 해결할 수 있습니다. 먼저 처음 예시는 간단하게 과일을 이름순으로 정렬하고 그다음 가격이 낮은 순으로 정렬하겠습니다. 먼저 과일의 값들은 아래와 같습니다. data = [ ["고구마",25000], ["바나나",123232], ["파인애플",4500], ["감자",3000], ["금귤",6000] ] 가격을 기준으로 정렬하겠습니다. data.sort(key = lambda x:x[1]) print(data) ## 출력 값 #[['감자', 3000], ['파인애플', 4500], ['.. 2020. 10. 20.
코테를 위한 isㅇㅇㅇ 메소드 코테를 위한 Python isㅇㅇㅇ메소드 파이썬 isㅇㅇㅇ메소드 파이썬 isㅇㅇㅇ 메소드는 해당 item이 문자열, 숫자, 소문자, 제목등 다양한 값들이 맞는지 True, Flase를 반환해주는 메소드 입니다. 다음 나오는 메소드들은 전부 코딩 테스트를 볼때 알면 좋은 메소드입니다. isalnum( ) isalnum( )은 문자와 숫자의 문자열을 탐지하는 메소드 입니다. 사용 예시는 다음과 같습니다. s = "helhleo123" if s.isalnum(): print("참") else: print("거짓") ### 출력 값 # 참 isalpha( ) isalpha( )는 오직 문자인지 확인하는 메소드 입니다. s = "helhleo123" if s.isalpha(): print("참") else: pr.. 2020. 8. 10.
Python list 연산에 따른 시간 복잡도 python list 연산에 따른 시간 복잡도 시간 복잡도가 O(1)인 연산 len(a) len(a)는 리스트 전체 요소의 개수를 리턴합니다. 사용 예시는 다음과 같습니다. a = [1,2,3,4,5] print(len(a)) ## 출력값 # 5 a[i] a[i]는 리스트중에서 해당 인덱스에 해당하는 값을 가져옵니다. a = [1,2,3,4,5] print(a[3]) ## 출력 값 # 4 a.append(x) a.append(x)는 해당 리스트 맨뒤에 x를 추가해 줍니다. a = [1,2,3] print(a) a.append(4) print(a) ## 출력 값 # [1,2,3] # [1,2,3,4] a.pop() a.pop()는 해당 리스트 맨 뒤에 있는 값을 pop 해줍니다. (스택의 연산 pop) a.. 2020. 8. 9.
분할정복 분할 정복 분할 정복이란 커다란 문제를 작은 부분 부분으로 나누어서 해결하는 방법입니다. 분할 정복의 전략은 재귀적 알고리즘을 사용하여 해결할 수 있습니다. 먼저 분할 정복을 하기 위해서는 두 가지 단계를 거칩니다. 기본 단계를 해결합니다. 이 부분은 가능한 한 간단한 문제여야 합니다. 문제가 기본 단계가 될 때까지 나누거나 작게 만들어야 합니다. 이것을 프로그래밍으로 표현하자면 다음과 같이 표현할 수 있습니다. function F(x): if F(x)가 간단 then: return F(x)를 계산한 값 else: x 를 x1, x2로 분할 F(x1)과 F(x2)를 호출 return F(x1), F(x2)로 F(x)를 구한 값 분할 정복 예시 코드 분할 정복 간단코드 (더하기) 분할 정복을 쉽게 이해하기.. 2020. 8. 6.
파이썬 itertools에서 Combinatoric iterators사용하기 itertools 에서 Combinatoric iterators 이번에는 조합 및 순열 문제를 쉽게 풀기 위한 itertools에서 Combinatoric iterators에 대해 알아 보겠습니다. 먼저 itertools란 PAL, Haskell 및 SML의 구성에서 영감을 얻은 여러가지 number of iterator building blocks를 구현합니다. 각각은 파이썬에서 적합한 형태로 개편되었습니다. 이 모듈을 자체적으로 또는 조합하여 유용한 빠르고 메모리 효율적인 도구의 핵심 세트를 표준화 합니다. 이들은 함께 "iterator algebra"를 형성하여 순수 Python에서 간결하고 효율적으로 특수 도구를 구성할 수 있습니다. 저는 여기에서 순열과 조합을 지원하는 Combinatoric i.. 2020. 7. 26.
003. Java의 기본 자료구조(다차원배열(달력,날짜계산)) 달력 만들기 평년 윤년 먼저 달력은 평년과 윤년이 있습니다. 따라서 이를 구분하기 위해 이차원 배열을 하나 만듭니다. static int[][]mDays = { {31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}, }; 윤년 조건 기본적으로 4로 나누어 떨어지면 윤년입니다. 하지만 추가적인 규칙이 있습니다. 4로 나누어 떨어지지만 100으로 나누어 떨어지면 평년입니다. 하지만, 400으로도 나누어 떨어지면 윤년입니다.(예)2000년, 2400년 따라서 아래와 같이 나타낼 수 있습니다. static int leapYear(int year){ return (year % 4 == 0 && year % 100 != 0 || y.. 2020. 1. 8.