목록분류 전체보기 (295)
습관처럼
파이썬 list 메소드에서 append()와 extend()의 차이점: def solution(): x = [1, 2, 3] x.append([4, 5]) #[1, 2, 3, [4, 5]] y = [1, 2, 3] y.extend([4, 5]) #[1, 2, 3, 4, 5] if __name__ == '__main__': solution() append(): object를 맨 뒤에 추가합니다. extend(): iterable 객체(리스트, 튜플, 딕셔너리 등)의 엘레멘트를 list에 appending시킵니다.
list는 배열을 의미합니다. 하지만 list 는 C++보다 다양한 기능을 제공하는 점에서 편하다고 생각합니다. 그럼 먼저 리스트는 리스트 만의 덧셈을 허용합니다. 0. 리스트의 표현 a=list() a=[] 1. 리스트의 덧셈 def solution(): alist=[1,2,3,4,5] blist=[2,3,4,5,6,7] result=alist+blist print(result)#[1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 7] #참고 : 리스트의 요소를 가지고 오는 것은 배열과 동일하게 list[idx]를 해주면 됩니다 print(alist[0]) # 1 if __name__ == '__main__': solution() 2. 리스트의 인덱스 추가 및 삽입 def solution(): a=..
주식가격 문제: 초 단위로 기록된 주식가격이 담긴 배열 prices을 토대로 가격이 떨어지지 않은 기간은 몇 초인지를 출력 접근방식: 1초 부터 n-1초까지의 가격 상승 및 유지된 시간을 파악 마지막 시간은 0초로 픽스 시킨다. 문제에서 주어진 테스트 케이스를 먼저 살펴보자. [1, 2, 3, 2, 3]이 prices로 주어진다. 1초 시점의 1원은 끝까지 가격이 떨어지지 않았다. 즉, 가격이 떨어지지 않은 기간은 4초이다. 2초 시점의 2원도 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 3초이다. 3초 시점의 3원은 1초 후 가격이 2원으로 떨어졌다. 따라서 가격이 떨어지지 않은 시간은 1초이다. 4초 시점의 2원은 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 1초이다...
스킬트리 문제: 유저의 스킬트리중 가능하지 않은 스킬트리를 제외하고 가능한 스킬트리의 개수를 구하다 접근 방식: 유저의 스킬트리중 규칙에 해당되지 않는 스킬트리를 제외하고 규칙을 따라야 하는 스킬만을 추려서 순서를 확인한다. 다음 순서가 맞는지 확인. 나의 풀이 def solution(skill, skill_trees): answer = 0 result=[] for idx,i in enumerate(skill_trees): result=[] for user_skill in i:#유저의 스킬에서 지켜야할 스킬트리의 스킬을 가지고 있는 경우 파악 if user_skill in skill: result.append(skill.index(user_skill))#가지고 있다면 오리지널 스킬순서 추가 set(res..
쇠막대기 문제: 레이저로 쇠막대기를 자를때 생성되는 쇠막대기의 총 개수를 출력하시오 접근 방법: 레이저 포인트의 위치를 리스트에 파악하고 자를때 현재 레이저 위치에 걸쳐있는 스택의 개수만큼 새로 생성된다. def solution(arrangement): answer = 0 pipe=[] laser = 0 for idx,i in enumerate(arrangement): if i == '(': laser=1 pipe.append(i) else: if laser==1: pipe.pop() answer += len(pipe)#레이저로인해 잘린 앞의 쇠파이프 개수 laser=0#레이저 포인트 체크 else: pipe.pop() #파이프의 끝부분 제거 answer+=1 #파이프이 끝부분으로 인해 생성된 쇠파이프 ..
파이썬에서 리스트의 결과를 특정 조건에따라 원소별로 변환하거나, 필터를 사용해 걸러내거나, 연산하는방법으로 map,filter,reduce 를 사용가능하다. 이 세가지 클래스는 함수를 매개변수로 받아 결과를 반환하는데, 이때 람다함수(lambda)를 자주 사용합니다. 우선 리스트를 만들고 각각 map,filter,reduce를 사용해봤습니다. reduce 함수는 매개 변수로 function, iterable[, initializer] 를 갖는다는 점을 주의해주세요~ >>run [1, 4, 9, 16] ['1', '2', '3', '4', '5'] [1, 3] 24 Process finished with exit code 0
여러개의 요소중에서 무작위로 뽑았을때의 각각의 순열과 조합은 어떻게 될까? 여러 알고리즘 문제에서 수열과 조합들이 자주 나오고 있는데 이걸 한번에 해결할 수 있는 모듈이 파이썬에는 존재합니다. 바로 itertools의 permutations 과 combinations입니다. alist = [1, 8, 3, 2] 가 존재한다고 가정해봅시다. b = itertools.permutations(alist, 2) # 순열 c = itertools.combinations(alist, 2) # 조합 위와 같은 코드를 실행하게 되면,b에는 itertools.permutations 객체가, c에는 itertools.combinations 객체가 반환됩니다. 첫번째 인자는 해당 리스트가 들어가가되며 두 번째 인자는 주어진..