파이썬 62

이진탐색 (1)

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서와 유튜브 강의를 참고하며 작성하였습니다. 코드 출처: https://github.com/ndb796/python-for-coding-test ▶ 이진탐색이란? 정렬된 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법으로 시작점, 끝점, 중간점을 이용해 탐색 범위를 설정한다. 찾고자 하는 값보다 중간값이 크면 오른쪽에 위치한 데이터는 중간값보다 큰값들이므로 모두 무시하고 왼쪽에 위치한 데이터들을 범위로 잡고 시작값, 중간값, 끝값을 다시 설정한다. 이를 반복하다 중간값이 찾고자하는 값과 같으면 실행이 종료된다. - 시간복잡도: 데이터를 탐색할 때마다 탐색범위가 반씩 좁혀지기 때문에 O(logN)이다. 데이터를 처음부터 탐색해야하는 순차탐색이..

[프로그래머스 | 파이썬] 기능개발- 큐사용

▶ 기능개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr > 큐 사용 먼저 들어온 원소가 먼저 나가는 구조이기 때문에 queue를 사용하였다. 먼저 val에 소요일수를 넣은 후 queue에 삽입한다. 다음 소요일수를 val에 넣은 후 queue의 가장 첫번째 요소와 val을 비교했을 때 val이 작거나 같으면 result에 1을 더해주고 더 크면 result를 answer리스트에 넣은 후 resul..

그리디 알고리즘 (1) / 그리디 알고리즘이란

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서를 참고하며 작성하였습니다 ▷그리디 알고리즘이란? 탐욕법으로 번역되는 해당 알고리즘은 현재 주어진 상황에서 가장 좋은 것만 고르는 방법이다. 문제를 보고 해당 문제를 풀 수 있는 아이디어를 떠올리는 것이 중요하다. 코테에서 많이 출제되는 유형이지만 아이디어를 생각하는 것이 중요하기 때문에 사전에 알고리즘을 외우지않아도 충분히 풀 수 있는 문제유형이다. 아이디어를 떠올린 후에는 가장 좋아보이는 걸 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토해야한다. ▷ 그리디 알고리즘 풀이법 즉 그리디 알고리즘은, 1. 최소한의 아이디어를 생각해내고, 2. 아이디어의 정당성을 분석해야한다. 다른 말로 내가 생각해낸 아이디어로 해를 구하고자 할때 최적의 해를 항상..

[프로그래머스 | 파이썬3] 로또의 최고 순위와 최저 순위

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 로또의 순위를 매겨주는 rank함수를 만들어서 해결하였다. def rank(value): if value == 6: return 1 elif value == 5: return 2 elif value == 4: return 3 elif value == 3: return 4 elif value == 2: return 5..

[프로그래머스 | 파이썬3] 크레인 인형뽑기 게임

https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 배열과 pop함수를 사용하여 풀었다. 배열을 순서대로 쌓는 과정에서 바로 이전 배열의 값과 반복되는 값이 있으면 이를 제거하고 다시 쌓아 올리는 방식을 택했다. def solution(board,moves): result_lst=[] n=0 result=0 for j in moves: for i in range(len(board)): # board배열의 해당위치에 값이 있으면 result..

[프로그래머스 | 파이썬3] 신규 아이디 추천_정규표현식, strip활용

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 정규표현식과 strip함수를 사용하여 풀었다. 주어진 룰들을 순서대로 구현하는 것이 중요하다. import re def solution(new_id): # 소문자 변환 new_id= new_id.lower() # 소문자, 숫자, -_.에 해당하는 문자들만 추출하여 생성된 리스트를 join함수로 묶어줌 p= re.compile('[a-z0-9-_.]+') ..

[프로그래머스 | 파이썬3] 내적_sum함수 활용

https://programmers.co.kr/learn/courses/30/lessons/70128 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr sum함수와 반복문을 사용하여 풀었다. def solution(a,b): return sum(a[i] * b[i] for i in range(len(a))) 코드에 쓴것과 같은 sum함수의 형식은 다음 링크의 코딩테스트 연습에서 처음 알게된 형식으로 이번 문제에 조금 변형하여 적..

[프로그래머스 | 파이썬3] 소수 만들기_combinations활용

https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 해당 문제는 itertools의 combinations함수를 활용하여 풀었다. from itertools import combinations def solution(nums): cnt= 0 for i in list(combinations(nums,3)): # 조합 튜플 합계 계산 sums= sum(i) # 합계가 소수인지 아닌지 판별한 후 소..

[프로그래머스 | 파이썬3] 음양더하기_ 기본연산식, sum함수 사용

https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 반복문과 기본 연산식만으로 간단하게 풀 수 있던 문제였다. 1. 첫번째 답안 def solution(absolutes, signs): result=0 for i in range(len(absolutes)): if signs[i]==True: result+= absolutes[i] else: result -= absolutes[i] retu..

[프로그래머스 | 파이썬3] 모의고사_enumerate, zip 활용

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 리스트의 요소들의 인덱스와 값을 돌려주는 enumerate함수와 리스트와 리스트를 차례대로 튜플형태로 붙여 돌려주는 zip함수를 사용하여 풀었다. def solution(answers): # 1,2,3번의 답안 유형을 answers 길이에 각자 리스트(패턴)의 길이로 나눈 값만큼 반복하여 리스트 생성 # 답안 길이가 각 리스트의 길이보다 작을 경우, 0번 반복될..