Algorithm

·Algorithm/Sort
난이도: Lv.2유형: 정렬해결 여부: 오답아이디어h-index를 구하는 문제아이디어는 h-index가 1차함수의 교점인점을 이용해 역순으로 세는 것오답 이유 혹은 알게 된것h-index의 개념자체가 생소해서 계산에서 삽질을 많이 했다for i,value enumerate(iterable): 쓰는 법을 배웠다. list comprehension이랑 쓰면서 복잡하게 접근했는데 그런 문제는 아니었다. def solution(citations): citations.sort(reverse=True) for i, citation in enumerate(citations): if i+1 >citation: return i return len(citations)
·Algorithm/DP
난이도: Lv.3유형: DP해결 여부: 통과아이디어삼각형 내려오면서 가장 큰 값을 구하는 문제. 내려오면서 DP로 기록하는식으로 구하면 된다.오답 이유 혹은 알게 된것로직틀리진 않았는데, 2차원 배열인거 무시하고 값 처음꺼 하나라고 index를 하나밖에 안써주거나 배열 초기화 할때 그냥 빈 배열 선언해놓고, list out of index 나게 하는거. append로 처리할 수 있는거는 처음부터 append 쓰는게 나을듯lamda 식 쓰면 앞으로도 임시값 처리할때 유용할 것 같다. def solution(triangle): height = len(triangle) arr = [int(triangle[0][0])] temp=[] for i in range(1,height): ..
·Algorithm/DP
난이도: Lv.3유형: DP해결 여부: 에러 후 통과아이디어평범한 길찾기 DP 문제오답 이유 혹은 알게 된것for문에서 range 안쓰고 그냥 in 써서 틀림...초깃값 설정 문제와 문제에서 말한 좌표가 1씩 더해진 것 보정이어야 하는데 그걸 안해서 틀렸다. 근데 또 테케에서는 맞아서 왜틀린지 몰랐었다.def solution(m, n, puddles): arr=[[0]*m for _ in range(n)] for puddle in puddles: arr[puddle[1]-1][puddle[0]-1]=-1 arr[0][0]=1 for i in range(0,n): for j in range(0,m): if (i==0 and j==0) or ..
·Algorithm/Sort
난이도: Lv.2유형: 정렬해결 여부:오답아이디어주어진 숫자들을 일렬로 붙였을떄 가장 큰수가 나오게 하라오답 이유 혹은 알게 된것사전식 배열이지만 자릿수에 따른 아이디어가 필요하다. 가령 3,31,34 가 있을때 34->3-> 31 순으로 배열해야 되서 별도 처리가 필요하다.이 과정을 별도 처리하려고 엄청 애를 썼는데 가령 뒤에다가 막 숫자를 별도로 붙여서 자릿수를 맞추어 계산한다거나...근데 그냥 아주 확실하고 강력한 아이디어가 해답이었다. 그냥 글자를 그대로 복붙하면 된다. 3은 333 으로 31을 313131... 이런식으로 그런게 가장 확실한 아이디어였는데 이걸 몰라서 틀렸다def solution(numbers): numbers = list(map(str, numbers)) number..
·Algorithm/Sort
난이도: Lv.0유형: 정렬해결 여부:통과아이디어오답 이유 혹은 알게 된것리스트 슬라이싱 저 형태는 맞는데, start:end-1 로 해야지 된다는 점 고려해야함sort()와 sorted()의 차이list.sort()는 원본도 바꾸며, 리스트에서만 사용가능sorted()는 옆에 a= 이런식으로 받는애가 있거나 print() 할때나 정렬된거 넘겨주고 원본은 안바뀜. 모든 iterable 자료형에서 사용 가능 def solution(array, commands): answer = [] for command in commands: i,j,k = command[0],command[1],command[2] temp = array[i-1:j] temp.sort() ..
·Algorithm/BFS,DFS
난이도: Lv.2유형: BFS/DFS해결 여부: 통과아이디어경우의 수를 BFS 써서 풀어라 이거 같은데 나는 어 그냥 쌩으로 풀어버렸다. 복잡도는 차이가 없어서..?오답 이유 혹은 알게 된것처음에 빠른 방법 없나 DP나 부분합 고민해봤는데 그냥 모든 경우의 수 다하는 수밖에 없다고 생각했다.sort 후 rfind와 find 써서 최종 제출하려 했으나 문자열이 아닌 그냥 리스트에서는 find를 지원 안하는 것도 있고 아 걍 count쓰면 편하겠다 싶어서 count로 쉽게 풀어버렸다이 방식으로 한건 대충 case 크기 보았을떄 2^20 이면 대충 1000 * 1000 이니까 메모리 약 100만칸 . 파이썬 배열 한칸에 36byte로 약 40Mb. 만약 범위가 25개면 메모리초과 오류가 날 거라고 했다.그래서..
·Algorithm/BFS,DFS
난이도: Lv.2유형: DFS/BFS해결 여부:오답아이디어2차원 배열에서 목적지까지 가는 최단거리 숫자 쓰는 간단한 문제오답 이유 혹은 알게 된것이전에 풀었떤 문제 응용하는 것과 비슷했다. 근데 일부분에서 걸려서 오래걸렸다.파이썬에는 NUll 대신 None을 쓴다는 점. 그리고 배열 값이 자동으로 0으로 초기화 된다는 점 때문에 초기화에 좀 걸렸다. 무엇보다 2차원 배열 하는과정에서 또 현기증 도져서 dx,dy 잘못더해서 찾는데 걸렸다. 만약에 성능을 높이고 싶으면 collections에서 deque 쓰는게 list에서 pop() 보다 deque popleft() 성능이 좋다고 한다. 여담으로 이런 코드로 통과받는 미친놈도 있었다. eq 로 object == ? 들어갈때 쓸 수 있는 코드같다. 파이썬 더..
·Algorithm/DP
난이도: Lv.3유형: DP해결 여부: 오답 아이디어주어진 숫자를 최소로 써서 사칙연산만으로 목표 숫자에 도달하는 개수 맞추기 오답 이유 혹은 알게 된것문제좀 잘 읽자. DP 인데 숫자의 개수가 아닌 사칙연산의 개수로 착각했던 점, 최대 8까지라는 제한이 없다는 점을 빼먹어서 더 효율적인 방법이 있을거라 생각해 애먹었다.DP 지만 bruteforce 적인 성격도 띄는 문제였다. 처음에 혹시 index 숫자에 value로 그 값 넣는 식으로 안되나 싶어서 시간이 걸렸다. set()의 사용이 미흡해 좀 걸렸다. set() 은 그냥 이렇게 선언해서 for문 돌리면 된다.update로 한번에 여러개 하려고 했는데 그게 아니었다. update로 set 여러개 add하고 싶으면 묶어주어야 해서 걍 add 여러번 쓰..
걍판자
'Algorithm' 카테고리의 글 목록 (3 Page)