프로그래머스(파이썬)/LV.1(파이썬)

    햄버거 만들기→인덱스 갱신★★+뒤를 기준으로 슬라이싱 [-4: : ]

    다른 사람의 풀이 1 def solution(ingredient): answer = 0 index = 0 while index < len(ingredient)-3: # 재료가 4개가 필요하기에 index가 리스트 총 길이 -3일때까지만 반복한다. if ingredient[index] == 1: # 첫 재료가 빵일때만 if ingredient[index:index+4] == [1,2,3,1]: # 4개의 재료가 햄버거 재료 순서와 맞는지 비교 del ingredient[index:index+4] # 맞으면 해당 요소들 리스트에서 제거 index = index-3 # index를 -3 요소에서부터 다시 비교하도록 조정(시간을 줄이는 핵심포인트) answer += 1 # 햄버거 카운트 continue # 다음..

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

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

    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..