알고리즘 166

[Python/프로그래머스]다시풀어보는_수식최대화_[구현,permutation,re.split]

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/67257?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1년전에 이 문제를 풀었던 블로그에 기록이 있다. 하지만 나는 전혀 기억이 나지않았고 문제를 보고 구현...? 이런 생각까지만 나왔다. 이 문제를 풀기위해 permutation 을 배웠고 re.split()도 배웠다. 많이 배워가는 문제다. permutation 포스팅 : https://what-am-i.tistory.com/453 [Python]Perm..

[Python]Permutation을 아십니까?

알았는데요 , 1년동안 안쓰니까 잊어먹었습니다. 이래서 기록이 중요합니다. Permutation은 파이썬에서 제공해주는 함수이다. (itertools에 있음) 순열이라는 뜻으로 학교다닐 때 배우던 순열과 동일한 뜻이다. 고3 확률과통계를 더 열심히 들었어야하는건데 ... => 서로 다른 N 개중에 r개를 고른다!! nPr 로 표시한다. from itertools import permutations arr = ['1','2','3'] npr = permutations(arr,2) print(list(npr)) 이렇게 하면 1,2,3 중에서 2개를 고르는것이다. [1,2 1,3 2,1 2,3 3,1 3,2 ] 가 나올것같다. 출력의 결과는 다음과 같다. [('1', '2'), ('1', '3'), ('2',..

[Python/프로그래머스]점 찍기_구현

https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 참고블로그를 보면 알수있지만 몇자 적어보자면 피타고라스 법칙을 이용해서 풀수있다. ( d^2 = x^2 + y^2 ) 에서 x를 이항하면 ( y^2 = d^2 - x^2 ) x를 k 간격으로 돌리면서 모든 x를 다 해보면서 y의 최대값을 구한다. y의 최댓값에서 k를 나누어 개수를 구한다. 이를 다 더해서 answer을 구해 return 한다. 1 . k의 배수만 가능하므로 for문을 k간격으로..

[Python/BOJ] 백준2629 양팔저울_DP

https://www.acmicpc.net/problem/2629 2629번: 양팔저울 첫째 줄에는 추의 개수가 자연수로 주어진다. 추의 개수는 30 이하이다. 둘째 줄에는 추의 무게들이 자연수로 가벼운 것부터 차례로 주어진다. 같은 무게의 추가 여러 개 있을 수도 있다. 추의 무 www.acmicpc.net 코드는 맞는 것같은데 시간초과가 난다....😥 시간초과 코드 : def dfs(L,val) : if L == n : candi.add(abs(val)) else : dfs(L+1,val+goosle[L]) dfs(L+1,val-goosle[L]) dfs(L+1,val) if __name__=="__main__" : n = int(input()) goosle = list(map(int,input()...

[Python/프로그래머스]파일명 정렬_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사실 알고 코드를 보면 간단하고 쉬운데 왜 딱 보면 너무 어려워보일까...🥴 정답코드 : def solution(files): answer = [] for f in files: head, number, tail = '', '', '' number_check = False for i in range(len(f)): # 문자열 자르기 if f[i].isdigit(): # 처음 나오는 숫자부터는 NUM..

[Python/프로그래머스]n진수게임_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 직접 풀었다! 근데 내가 만든 코드보다 다른 사람코드가 더 효율적인듯하다😂 내가 푼 코드 : def solution(n, t, m, p): answer = [0] ans = '' # 숫자 구하기 for i in range(1,(m*t)+1) : tmp_list = [] while i : tmp = (i%n) if tmp >=10 : # 10보다 커지면 ABCDE tmp_list.append(..

[Python/프로그래머스]압축_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr W : 비교할 문자열의 첫 인덱스 C : 비교할 문자열의 끝 인덱스 만약 있다면 while True 이기 때문에 다음으로 넘어간다. 넘어가면 c+=1 으로 언젠가 dic에 없는 단어가 나올 수 밖에 없다. 없는 단어가 나오면 dic에 추가하고 이전까지 있었던 문자열의 값을 dic에서 찾아 answer에 붙인다. w(시작 인덱스)를 끝 인덱스와 동일하게 해준다. 코드 : def solution(ms..

[Python/프로그래머스]방금그곡_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어렵지 않아보여서 풀었었다! 코드 실행으로는 3개의 예제 모두 맞았는데 채점에서 다 틀렸다🤦‍♀️ 답을 찾아보니 훨씬 효율적이고 깔끔하게 만든 코드가 있었다. 나도 깔끔하게 , 간단하게 코드를 만들고 싶다... import math def solution(m, musicinfos): answer = None m = m.replace("C#",'c').replace("D#",'d').replace(..

[Python/프로그래머스]후보키_조합

https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어떻게 푸는지 잘 감이 안왔는데... combinations를 쓰는건가 생각했는데 맞았다. combinations는 반환 값이 튜플이다. 1. combinations를 이용해서 조합을 모두 구한다. 2. 유일성을 만족하는 친구를 찾는다. -> 1번에서 구한 친구들을 이용해 relation값들을 이용해서 튜플을 만들고 그것의 set(중복제거)후의 길이가 relation의 길이와 동일하면 모두 식별할..

[Python/프로그래머스]외벽점검_구현

https://school.programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어렵다!!😈😈 그래도 이런 구현을 풀어야 코테를 풀 수 있는거겠지 1. 먼저 계산을 쉽게 하기 위해 원형을 선형으로 바꿔준다. (원래 값에 원형의 길이를 더해 붙여주면 된다.) 2. 각각의 모든 weak 지점에서 시작하는 경우를 모두 확인하기 위해 permutation으로 순서를 정하기 전에 for문으로 weak의 길이만큼 돌린다. 3. position을 구한다. count도 1로 초기화 해준다...