python 79

그리디 알고리즘 (2) / 큰수의법칙, 숫자카드게임, 1이될때까지

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서를 참고하며 작성하였습니다. 본 포스팅에서 작성한 코드문제는 해당 저서에 나와있는 문제 일부입니다. https://westshine-data-analysis.tistory.com/30 그리디 알고리즘 (1) / 그리디 알고리즘이란 나동빈님의 '이것이 코딩테스트다 with 파이썬'저서를 참고하며 작성하였습니다 ▷그리디 알고리즘이란? 탐욕법으로 번역되는 해당 알고리즘은 현재 주어진 상황에서 가장 좋은 것만 고르는 방 westshine-data-analysis.tistory.com ▷ 동빈이의 큰 수의 법칙 1. 아이디어: 가장 큰 수를 M//K * K만큼 더할 수 있다. 그 외 남은 나머지 횟수만큼은 두번째로 큰수로 더한다. 만약 배열에 가장 큰 수가 중복..

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

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

시간복잡도/ BigO표기법

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서를 참고하며 작성하였습니다 프로그래머스에서 문제를 풀다보면 종종 시간초과 때문에 문제를 틀리는 경우가 발생한다. 그렇기 때문에 코드를 짤때엔 시간 복잡도를 고려해주는 것이 중요한 요소이다. ▷시간 복잡도란? 알고리즘이 특정 크기의 입력에 대해 수행하는데 얼마나 오래걸리는 지를 나타내는를 의미한다. 내가 코드를 어떻게 짜느냐에 따라 시간복잡도가 달라지기 때문에 데이터의 입력 크기에 맞춰 적절한 전략을 세워 시간복잡도를 줄이도록 노력하는 것이 중요하다. ▷ 시간복잡도 표현 - bigO 표기법 시간복잡도를 표현하는 방법으로는 bigO표기법이라는 것이 있다. 만일 2N^3 + 1000이라는 다항식이 있다고 할 때 빅오 표기법은 차수가 가장 높은 항만을 고려하여..

[프로그래머스 | 파이썬3] 키패드 누르기

https://programmers.co.kr/learn/courses/30/lessons/67256/solution_groups?language=python3&type=my 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def distance(left_loc, right_loc, mid_loc): return [abs(left_loc[0]-mid_loc[0])+abs(left_loc[1]-mid_loc[1]), abs(right_loc[0]-mid_loc[0])+abs(right_loc[1]-mid_loc[1])] def solution(numbers,..

[프로그래머스 | 파이썬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..