Dev/Algorithm 37

[프로그래머스] 가장 많이 받은 선물

문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr생각1. 주고받은거 배열 인덱스가 있으니,, 이차원 배열을 만들어 누가 누구한테 얼만큼 줬는지 기록하기 2. 순차 배열을 순회하며 서로 선물을 받았는가? 안받았는가 체크 2.1 받았다면 이차원배열 더 높은 사람이 결과 ++  2.2 주고 받은적 없거나, 정확히 같은 수로 선물 주고받았을 경우 2.2.1 선물지수로 판단하기  - 가로 합 : 준 선물, 세로 합 : 받은 선물 = 가로합 - 세로 합 ..

Dev/Algorithm 2024.05.17

[프로그래머스] 붕대 감기

문제https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr생각마지막 공격 받은 시점까지 순회하면서공격을 안받았다면 : 연속 성공 시간 증가, 체력 증가, 최대 체력 관리,공격 받았다면 : 연속 성공 시간 초기화, 체력 감소, 공격 idx 증가, 죽음 관리더 고려할 생각연속 성공 최대 시 다시 0 으로가는걸 고려 못함.예제 코드를 더 잘 보자.코드public class Main { public static void main(String[] args)..

Dev/Algorithm 2024.05.17

75. [TIL] 오늘의 배움일지 ( 21-09-17 )

1. 냅색 문제 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 풀이를 먼저 이해하고, 다시 내가 짜보는 방식을 써봤더니 이해도 되고, 풀이도 되었다. 장기기억으로 넘어갈지는 아직 모르겠다. 2. 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www..

Dev/Algorithm 2021.09.17

15. [알고리즘] 정다면체

내 생각 defaultdict를 사용하는게 핵심. 해시를 생각했다. 구현 import collections n,m = map(int,input().split()) di = collections.defaultdict(int) for i in range(1,n+1): for j in range(1,m+1): di[i+j] += 1 max_value = max(di.values()) res = [] for d in di.items(): if d[1] == max_value: res.append(d[0]) res = list(map(str,res)) print(" ".join(res))다른사람 생각 리스트를 사용했다. 배열 크기를 잘 정하는게 핵심인듯 구현 n,m = map(int,input().split())..

Dev/Algorithm 2021.05.02

14. [알고리즘] K번째 큰 수

내 생각 콤비네이션을 이용해야겠다고 생각했음 리스트의 3개 뽑은 콤비네이션을 구함 합을 계산해서 다른 리스트에 넣음 ~번째 == idx-1 구현 #K번째 큰 수 from itertools import combinations n,k = map(int,input().split()) arr = list(map(int,input().split())) combi = combinations(arr,3) ar = [] for c in combi: ar.append(sum(c)) ar.sort(reverse=True) print(ar) ar = list(set(ar)) # 간과했던 부분 ar.sort(reverse=True) print(ar) print(ar[k-1]) 다른사람 생각 삼중포문을 사용할 생각을 했음 여기..

Dev/Algorithm 2021.04.29

12. [알고리즘] K번째 약수

내 생각 1. 약수의 리스트를 구함 2. 정렬 3. k-1 번째 수를 리턴해준다. 구현 # K번째 약수 def solution(a,b): def sol1(n): li = list() for i in range(1,n): if n % i == 0: li.append(i) return li def sol2(li,b): if len(li) < b: return -1 li.sort() return li[b-1] li = sol1(a) answer = sol2(li,b) return answer print(solution(6,3)) print(solution(25,5)) print(solution(100,5)) print(solution(100,7)) print(solution(1000,12)) 다른사람 생각 c..

Dev/Algorithm 2021.04.29

[백준] 그래프의 탐색 (DFS, BFS)

그래프의 탐색에는 깊이우선 탐색과, 너비우선 탐색 방법 두가지 방법이 존재한다. 각각을 구할 때, 인접행렬로 구하는 방식이 있고, 간선 리스트로 구하는 방식이 존재한다. 인접행렬은 이차원배열이기 때문에 O(N^2)의 시간이 걸리고, 간선리스트는 간선의 합만큼만 시간복잡도가 걸리기 때문에 O(V+E) 의 시간복잡도가 존재한다. 시간을 최소화 하고싶다면 간선리스트로 구현하자! 1260번. DFS와 BFS https://www.acmicpc.net/problem/1260 더보기 def dfs(n,v): global arr,check check[v] = True print(v,end=' ') for i in range(1,n+1): if arr[v][i] == 1 and check[i] == False: dfs..

Dev/Algorithm 2021.03.27