본문 바로가기

Algorithm231

[프로그래머스 lv 3] N으로 표현 사용 언어 - Python3 문제 - N으로 표현 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 n숫자를 이용해서 number를 만들기 n 숫자를 1개부터 8개(cnt)까지 활용하면서 찾아준다. n을 최소한으로 사용해야하므로 number 값이 나오면 바로 끝낸다. return cnt 구하는 값 저장할 리스트, dp = [] dp 값들로 사칙연산한 값을 저장할 set, partial_dp = set() n을 2번 사용한다 = n + n o.. 2023. 12. 5.
[프로그래머스 lv 1] PCCP 기출 1번 붕대감기 사용 언어 - Python3 문제 - PCCP 기출 1번 붕대 감기 https://school.programmers.co.kr/learn/courses/19344/lessons/242258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 구현 각 단계별 체력을 status 리스트에 저장하기 0. 시간은 1초부터 attack[-1][0] 초까지 1. 초기 체력 = health, 시전시간 count 해줄 cnt = 0 2. 공격시간과 피해량을 attack_list에 저장해주기 3.1. 공격 받았다면, 이전상태에서 피해량 빼주기 status[i] = sta.. 2023. 12. 4.
[프로그래머스 lv 3] 베스트앨범 사용 언어 - Python3 문제 - 베스트앨범 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 hash 사용하기 1. 딕셔너리 생성 dic1 각 장르별 인덱스와 재생수 dic1[g] = [(i,p)] dic2 각 장르별 재생횟수 총합 dic2[g] += p 2. 정렬 dic2의 장르별 총 재생 횟수가 많은 순서대로 내림차순 정렬 > dic1[k] 해당 장르에서 가장 많이 재생된 순서대로 내림차순 정렬 -> [:2] 두곡만 index를 a.. 2023. 12. 4.
[프로그래머스 lv 2] 의상 사용 언어 - Python3 문제 - 의상 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 hash 사용하기 1. 옷을 종류별로 구분하기 hasp_map[얼굴] = 얼굴에 쓰는 옷 종류 개수 type에 해당하는 옷이 없다면 +1 / 있다면 지금까지의 count + 1 hash_map.get(type,0) + 1 2. 모든 조합 계산하기 상의 2개에 하의 1개이면, 상의만 입거나 하의만 입을 수도 있으므로 가능한 경우 수 = 상의 3개*하의.. 2023. 12. 4.
[프로그래머스 lv 2] 전화번호 목록 사용 언어 - Python3 문제 - 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 zip, startswith 사용하기 (정답 맞춘 여부 X) 1. phone_book을 짧은 숫자부터 정렬한후, 비교해준다. 2. 더 긴 숫자가 짧은 숫자로 시작한다면 return False , 아니라면 return True def solution(phone_book): phone_book = sorted(phone_book) # 짧은 숫자.. 2023. 12. 4.
[백준] 1197번 최소 스패닝 트리 (프림, 크루스칼) 사용 언어 - Python3, PyPy3 문제 - 1197번 최소 스패닝 트리 Minimum Spanning Tree 최소한으로 뻗어나가는 트리 - 프림 = 다익스트라 이용해서 MST 구하는 문제 - 크루스칼 = 유니온파인드 이용해서 MST 구하는 문제 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 정답 최소 스패닝 트리 알고리즘 트리의 기본 조건 : 사이클 발생 X 방법1. 프림 다익스트라를 이.. 2023. 11. 8.
[백준] 1717번 집합의 표현 (유니온 파인드 문제) 사용 언어 - Python3, PyPy3 문제 - 1717번 집합의 표현 유니온 파인드 union & find 두 노드, 두 숫자, 두 무언가가 같은 집합 안에 있나요? https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 정답 유니온 파인드 x==0 인 경우, 두 집합 합치기 _union(a,b) - 부모 리스트 생성 par = [i for i in range(n+1)] 부모는 자기자신으로 시작 - 관계 생성 .. 2023. 11. 6.
[백준] 11725번 트리의 부모 찾기 (트리 문제) 사용 언어 - Python3, PyPy3 문제 - 11725번 트리의 부모 찾기 트리 = Tree = 나무 = Root + Seed 족보(가족관계도) = 조상 + 자손 https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 트리의 조건 1. 모든 노드들은 연결되어 있어야 한다. (1개도 트리 가능) 2. 사이클이 발생하면 안된다. (내 아들이 할아버지이다? 불가능) 트리의 종류 1. 조상이 정해진 트리 = 루티드 트리 2. 조상이 정해지지 않은 트리 = 트리 1. 양방향 누가 부모이고 누가 자식인지 모르기 때.. 2023. 11. 4.
[백준] 1991번 트리 순회 (트리 문제) 사용 언어 - Python3 문제 - 1991번 트리 순회 트리 = Tree = 나무 = Root + Seed 족보(가족관계도) = 조상 + 자손 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 정답 트리의 조건 1. 모든 노드들은 연결되어 있어야 한다. (1개도 트리 가능) 2. 사이클이 발생하면 안된다. (내 아들이 할아버지이다? 불가능) 트리의 종류 1. 조상이 정해진 트리 = 루티드 트리 2. 조상이 정해지지 않은 트리 = 트.. 2023. 11. 4.
[백준] 1753번 최단경로 (다익스트라 문제) 사용 언어 - Python3, PyPy3 문제 - 1753번 최단경로 다익스트라 : BFS + 우선순위 큐 활용 (그래프에서 노드의 가중치에 따라 탐색해야 한다면, BFS만으로는 한계가 있다.) https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 정답 다익스트라의 3가지 중요 포인트 1. 각각의 노드에 값(가중치)을 업데이트 2. 여러 경로가 있다면 min 최솟값을 사용 3. 방문 순서 = 시작점으로부터 거리를.. 2023. 11. 4.