반응형

알고리즘 문제풀이 50

가장 큰 수_정렬

정렬은 보통 다 풀 수 있었는데 이 문제는 착안을 성공하고도 시간초과로 못 풀었다. 일단 나는 itertools permutation 으로 ex) 6 10 2의 모든 조합 경우의; 수를 파악하여 놓고 max로 결과 값을 구했는데 - 시간초과에 걸렸다 실제 시간도 엄청 걸린다 정답은 이 풀이 아스키코드로 바꿔서 비교를 하는데 착안이 엄청 어렵다 특히 X*3부분이 이해가 가지않았는데 같은 문자를 3번반복 ex) 6-> 666 이렇게 해서 비교를 한다 좀 더 제대로 공부해야겠다... programmers.co.kr/learn/courses/30/lessons/42746

타겟넘버 DFS

사실 이 문제는 5분 정도 고민하고 풀이를 바로 봤다 이유는 DFS로 풀 만한 단서가 전혀 보이지 않았기 때문.. 근데 풀이를 보니 너무 쉬워보이지만 저것을 착안해 내는게 실력... itertools product는 예를들어 arr1=[1,2] arr2=[3,4]면 product(arr1,arr2) -> 1,2 1,3 2,3 2,4 처럼 모든 가능한 조합의 수를 다 찾아주는 함수 programmers.co.kr/learn/courses/30/lessons/43165

전화번호 목록 - 해시 테이블

코드 최신화 -> 다시 풀어봤는데 이렇게 푸는 것이 가장 직관적 phonebook[1:] 는 처음 구조대를 빼고 생각하기 위해 선언 startwith -> 왼쪽에서 부터 찾고 같은게 있으면 True 범위를 지정해 줄 수도 있음 def solution(phone_book): answer = True hash_map = {} for phone_number in phone_book: hash_map[phone_number] = 1 for phone_number in phone_book: temp = "" for number in phone_number: temp += number if temp in hash_map and temp != phone_number: answer = False return answe..

위장

문제 보통 이문제는 from functools import reduce 로 많이 푸는데 따로 저 모듈을 떠올리기가 쉽지 않아서 일단 정석대로 풀어보고 .... 안되면 찾아본다음에 모듈을 쓰는게 맞다. 그래서 모듈도 (해답을 봤지만) 한번 코드 필사를 했다 *참고 from functools import reduce -> 왼쪽에서 오른쪽으로 누적으로 더 해주는것 ex) sum(sum(sum(sum(1, 2), 3), 4), 5) programmers.co.kr/learn/courses/30/lessons/42578

H-Index

인덱스를 이용하여 citations[i]>=len(citations)-i 를 생각해내는 것이 포인트 ->H번이상 인용된 논문이 H편이므로 이런식으로 코드를 짜게 됨 H번이상 H편 이란 것이 결국 index를 하나씩세서 즉 0 1 2 3 4가 h편이되는 것이고 H번이상이 citation[i]를 말하는 것.. 그리고 이 비교를 정확하게 하기위해 처음에 오름차순으로 sorting하는 것 결국 return은 3 2 1 0 0 순으로 나오게 됨( 착안이 쉽지 않음..) programmers.co.kr/learn/courses/30/lessons/42747

반응형
반응형