프로그래머스(파이썬)

    기사단원의 무기→약수를 구하는 효율적인 알고리즘★★

    기사단원의 무기→약수를 구하는 효율적인 알고리즘★★

    100의 약수는 아래와 같다. 1, 2, 4, 5, 10, 20, 25, 50, 100. 1단계-약수 구하기 통상적(본능적)으로 다음과 같이 구한다. def divisor_v1(N): result=[] for i in range(1, N+1): if N % i==0: result.append(i) return result #N=100인 경우 출력결과는 아래와 같다. #[1, 2, 4, 5, 10, 20, 25, 50, 100] 2단계- 제곱근을 기준으로 약수 구하기 "N의 약수를 구할 때는, "1부터 N의 제곱근까지"의 수로 나누어 떨어지는지 확인하면 된다!" 즉 100의 제곱근인 10을 기준으로 좌측(작은 약수)와 우측(큰 약수)를 각각 구하고, 그 다음에 중복되는 요소를 제거해 주면 된다. 아래에서 ..

    명예의 전당→킹 받네!! 열 받네!! + del vs remove()

    다른 사람의 풀이 1 def solution(k, score): stack=[] result=[] for i in score: stack.append(i) stack.sort(reverse=True) if len(stack)>k: del stack[-1] result.append(stack[-1]) return result ▶ del은 index에 해당하는 요소를 삭제한다. 다른 사람의 풀이 2 def solution(k, score): q = [] answer = [] for s in score: q.append(s) if (len(q) > k): q.remove(min(q)) answer.append(min(q)) return answer ▶ remove() 첫번째로 나오는 값을 삭제한다.

    신규 아이디 추천→isalpha(), isdigit(), 정규식★★

    나의 풀이 def solution(new_id): answer = '' #1단계 알파벳을 소문자로 변경한다. 알파벳이외의 문자는 자동적으로 무시된다. new_id=new_id.lower() #2단계 소문자, 숫자, 빽, 밑줄, 마침표를 제외한 모든 문자를 공백(제거)으로 대체 for i in new_id: if i.isalpha() or i.isdigit() or i in ['-', '_', '.']: answer+=i #3단계 마침표가 중복된다면 이를 제거한다. #".."이 존재하는 동안만! while ".." in answer: answer =answer.replace("..", ".") #4단계 마침표가 처음이나 끝에 위치한다면 제거 합니다. if answer and answer[0]=='.': a..

    크레인 인형 뽑기 →"열"접근★★ + 전부 1씩 빼주기(람다식)★★

    나의 풀이 def solution(board, moves): stack=[] cnt=0 #j는 열(column)을 의미한다. #len(board)는 행의 갯수를 의미한다. #move리스트에서 1은 0열(column)을 의미한다. 5는 4열(column)을 의미한다. for j in range(len(moves)): for i in range(len(board)): # print(board[i][moves[j]-1]) 열단위로 접근한다. if board[i][moves[j]-1] !=0: #stack processing stack.append(board[i][moves[j]-1]) board[i][moves[j]-1]=0 #스택에 동일한 값인지 아닌지 확인을 한다. if len(stack)>=2 and s..