일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자바 for문
- 자바 switch문
- 자바
- TypeScript
- Til
- 조코딩
- 자바 반복문
- 타입스크립트
- 프로그래머스
- 항해99 2기
- 자바 삼항연산자
- 자바 조건문
- 정보처리기사실기
- 항해99
- react with typescript
- react ag grid
- 자바 if문
- 자바 구구단 출력
- 자바 공배수
- 자바 while문
- 자바 public
- 자바 자동캐스팅
- 변수
- 자바 강제 캐스팅
- 자바 스캐너
- Vue3
- java
- 이클립스 DB연동
- MySQL
- 자바 향상된 for문
- Today
- Total
목록알고리즘/백준 문제풀이 (52)
뇌 채우기 공간

힙이란? 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진트리 최대힙과 최소힙 최소힙은 최소값이 가장 상위에 있고 부모 노드가 자식 노드보다 값이 작아야한다. 최대 힙은 최대값이 가장 상위에 있고 자식 노드가 부모 노드보다 값이 작아야한다. 문제 값을 넣고 0을 입력하면 배열에서 가장 큰 값을 출력해라 문제풀이 heapq에서는 최소 힙을 제공하기때문에 값을 -를 붙인 key값으로 heap에 넣는다. 그러면 가장 큰 값이 가장 상위에 올라가게된다. 그리고 출력할때는 value값으로 출력한다. 코드 import sys import heapq as hq numbers = int(input()) heap = [] for i in range(numbers): num = int(sys.stdin.re..

문제 컴퓨터끼리 연결된 쌍이 주어진다. 1번 컴퓨터가 웜 바이러스에 걸렸을때 연결된 모든 컴퓨터가 웜 바이러스에 걸린다. 바이러스에 걸리는 컴퓨터의 수를 출력해라 문제풀이 DFS로 푼다. 연결되어있는 노드를 끝까지 탐색해야하기 때문. 2차원 배열에 연결되어있는 값을 저장한다. 1번 노드에 연결된 모든 값을 visited_dfs에 저장하고 1번의 뺀 개수를 출력한다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 정점의 연결정보 입력받기 n= int(input()) #정점 m = int(input()) #연결수 graph = [[] for _ in range(n+1)] for _ in range(m): a, b = map(int, inp..
문제링크 문제 사람마다 atm기에 있는 시간이 다르다. 모든 사람이 돈을 인출하는데 필요한 시간의 합이 가장 작도록 만들어라 그리고 그 합을 출력해라 문제 풀이 시간이 주어질때 앞에서부터 작은 시간이 걸리는 순서대로 줄을 서면 합이 가장 작아진다. 입력 1을 봤을때 1 2 3 3 4 순서로 서야 최소의 값이 나온다. time에 시간을 리스트로 저장하고 오름차순으로 sort한다 time[i]번째 사람이 걸리는 시간은 그 전까지의 시간을 다 더한 것에 자신의 시간을 더한 시간이다. 코드 import sys num = int(sys.stdin.readline()) time = list(map(int,sys.stdin.readline().split())) time.sort() # print(time) sum =..
문제 k원을 만드는데 필요한 동전 개수의 최솟값을 출력하라 문제 풀이 입력받은 코인을 배열에 저장하고 내림차순으로 정렬한다. k원보다 코인이 큰 것은 지나가고 k원보다 작아지면 k원을 coin으로 나눌 수 있는 지 확인한다 나눌 수 있으면 몫이 coin의 개수이고 나머지가 남으면 나머지를 다음으로 작은 코인으로 나눈 것을 더하면 된다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import sys kind_of_coin, money = map(int,sys.stdin.readline().split()) coins = [] for _ in range(kind_of_coin): coin = int(sys.stdin.readline()) coins.append(coin) coins.rev..
문제 주어진 식에 괄호를 적절히 쳐서 식의 값을 최소로 만들어라 문제 풀이 처음에 55-50+40을 보고 그냥 +를 다 마이너스로 바꾸면 되지 않을까라고 생각했다. 그런데 55+50+40-30+20+10 이면 40 뒤에부터 -로 바꿔야하기 때문에 일단 -를 기준으로 입력값을 split하여 배열에 넣는다. 그리고 첫번째로 들어가 있는 값에서 그 뒤의 모든 값을 빼준다 코드 # ------------------------------ arr = input().split('-') # print(arr) result = 0 for i in arr[0].split('+'): result += int(i) for i in arr[1:]: for j in i.split('+'): result -= int(j) prin..