알고리즘(46)
-
[Python] Programmers lv2 - 더 맵게
[Python] Programmers lv2 - 더 맵게 코딩테스트 연습 - 더 맵게 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 주어진 조건 음식의 스코빌 지수가 담긴 리스트 스코빌 지수의 최소 요구치 리스트 내의 모든 요소들이 해당 요구치를 넘어야 한다 풀이 아이디어(기존) 주어진 스코빌 지수 리스트를 heap에 넣어준다 heap으로 들어가면 작은 순서대로 정렬이 되며 pop을 하는 경우에도 작은 순서대로 나오게 된다 heap에서 두 개의 원소를 꺼내서 조건에 맞게 조립 후 총 조립 횟수의 cnt와 요구치를 넘었는지 확인한다 풀이 아이디어 ( 오답 후 조건 추가 - 문제를 다각도로 분석 및 조건 설정의 미숙함 존재 ) 첫 번째 원소를 pop 하고 힙에 남아있는 원소가 있는지 체..
2024.02.11 -
[Python] 프로그래머스 lv3 - 가장 먼 노드
[Python] 프로그래머스 lv3 - 가장 먼 노드 코딩테스트 연습 - 가장 먼 노드 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 vertex로 연결된 정점들이 주어진다. 연결된 정점끼리의 간선은 모두 1이다. 1번 정점을 기준으로 하여 해당 정점에서 멀리 떨어진 정점의 개수를 반환하는 것이다 떨어진 거리를 dist로 하여 배열에 저장을 한다 이때 거리의 최댓값과 동일한 노드의 갯수를 반환하는 방식을 선택했다 거리를 측정하는 방법은 다익스트라 알고리즘을 사용 각 정점끼리의 거리를 최대..
2024.02.08 -
[Python] 프로그래머스 lv2 - 뉴스 클러스터링
[Python] 프로그래머스 lv2 - 뉴스 클러스터링 코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 주어진 문자열(특수문자 제외)의 교집합과 합집합을 구해서 값을 구하는 문제이다 마지막 도출 값은 교집합/합집합*65536을 곱해주고 뒤에 소수점은 버려주는 것이 조건이다 풀이 코드 각각의 문자열의 부분집합 생성 2개의 문자를 가진 문자열을 생성한다. 이때 문자열에 특수문자가 끼어있는 경우 제외한다. -> isalpha() 사용 문자열의 경우 대..
2024.02.01 -
[Python] 프로그래머스 lv2 (2019 카카오 개발자 겨울 인턴쉽) - 튜플
[Python] 프로그래머스 lv2 - 튜플 코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사실문제를 이해하는데 되게 오래 걸렸던 문제였다. 정확히 말하면 출력값을 지정하는 부분에서 오래 걸렸다. 주어진 문자열 튜플 중에서 나오는 원소들을 리스트에 넣어라. 이때 넣어지는 원소는 중복값이 들어가면 안 된다라는 점이었다. 다만 출력의 방식에서 문제가 생겼다. 출력값 result를 보면 순서가 정해져 있었는데 해당 순서를 어떤 기준을 통해 열거되어있는지를 찾아야 하는데..
2024.01.31 -
[Python] 프로그래머스 lv2 - 타겟 넘버
[Python] 프로그래머스 lv2 - 타겟 넘버 코딩테스트 연습 - 타겟 넘버 | 프로그래머스 스쿨 (programmers.co.kr) 문제 설명 주어진 숫자 리스트의 내부 원소를 각각의 +-를 진행하여 계산 이때 최종적으로 계산된 결괏값이 target과 같은 경우를 종합하여 최종 경우의 수를 출력 DFS/BFS 카테고리 재귀로 풀이 total 값에 각각의 idx를 더하기, 빼기를 진행하여 total 값 변경을 진행 풀이 코드 answer=0 def recur(numbers, target, idx,total): global answer if idx == len(numbers): if total == target: answer+=1 return recur(numbers, target, idx+1, tot..
2024.01.03 -
[Python] 프로그래머스 lv2 - 소수 찾기
[Python] 프로그래머스 lv2 - 소수 찾기 코딩테스트 연습 - 소수 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 주어진 숫자는 문자열로 주어진다 문자열로 주어진 숫자를 하나씩 나눠서 리스트로 변경한다 주어진 숫자를 한자리 숫자로 변경한 뒤 순열을 사용해서 만들 수 있는 숫자 문자열을 만든다 해당 문자열을 만들고 set의 성질을 사용해서 중복 값 제거 만들어진 문자열의 경우 [ [" 0 " , " 1 " , " 1 " ] ]의 형태로 존재하기에 join 메서드를 통해 리스트의..
2024.01.03