본문 바로가기

전체 글82

[Level 1] [python] 실패율 문제 파이썬 문제 풀이 def solution(N, stages): dic = {} answer = [] user = len(stages) for i in range(1, N+1) : if user != 0 : # 남아있는 유저가 있다면 count = stages.count(i) dic[i] = count/user user -= count else : dic[i] = 0 for key, _ in sorted(dic.items(), key=lambda x:(-x[1], x[0])): answer.append(key) return answer 실패율을 가지고 내림차순으로 스테이지 번호를 출력해야 하기 때문에 각 스테이지 번호에 대한 실패율을 저장해야 했다. 즉 스테이지 번호와 실패율을 쌍으로 기록해야하기 때.. 2022. 1. 3.
[Level 1] [python] K번째수 문제 파이썬 풀이 def solution(array, commands): answer = [] for i, j, k in commands : new_arr = array[i-1 : j] new_arr.sort() answer.append(new_arr[k-1]) return answer 배열을 인덱싱을 이용하면 쉽게 풀 수 있는 문제였다. i번째는 인덱스로 i-1이고 인덱싱에서 end는 포함하지 않기 때문에 (j-1) 번째에 +1을 해줘서 j까지로 잘라낸다. 그리고 파이썬의 sort()함수를 이용해 잘라낸 배열을 정렬해주었다. 그리고 k번째(인덱스 k-1) 값을 answer배열에 추가해주었다. 2021. 12. 29.
[Level 1] [python] 신규아이디 추천 문제 파이썬 풀이 import re def solution(new_id): new_id = new_id.lower() #1단계 #2단계 new_id = re.sub('[=+,#/\?:^$@*※~&%!\(\)\[\]\\{\}]', '', new_id) #3단계 new_id = re.sub('[.]\.+','.',new_id) #4단계 new_id = new_id.strip('.') #5단계 if not new_id : new_id = "a" #6단계 if len(new_id) > 15 : new_id = new_id[0:15] if new_id[-1] == "." : new_id = new_id[:-1] #7단계 while len(new_id) < 3 : new_id += new_id[-1] answer .. 2021. 12. 28.
[python] 11725번 - 트리의 부모 찾기 문제 파이썬 풀이 트리를 그래프를 저장하듯 리스트 형태로 저장하고, 부모 노드를 저장하는 리스트를 생성하는 것이 포인트였다. 부모 노드를 저장하는 리스트는 리스트의 인덱스가 해당 노드가 되고 저장된 값은 부모 노드가 된다. 예를 들어보면 2와 연결되어있는 노드 들은 2의 부모 노드와 자식 노드로 나뉜다. 이때 부모 노드를 저장하는 리스트에서 2의 부모 노드가 무엇인지 가져와 2와 인접한 노드들 중 부모 노드를 제외한다. 그럼 나머지는 전부 2의 자식노드가 된다. 이제 자식 노드로 구별된 노드들의 부모 노드를 2로 저장한다. 이와 같은 과정을 모든 노드들에 접근하면서 부모 노드를 저장한다. 모든 노드들을 접근하는 과정에서는 dfs나 bfs를 이용하여 전체 탐색한다. 나는 dfs를 통해 구현하였다. from.. 2021. 12. 20.