알고리즘(27)
-
[알고리즘/자바] 프로그래머스 - 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린�� programmers.co.kr 내가 원하는 출력물이 몇번만에 출력되는지 계산하는 문제다. 그냥 꺼내면 좋겠지만 각 출력물은 우선순위가 부여되어있다. 먼저 prior에 우선순위 정보를 넣고, loc에 위치 정보를 넣었다. prior의 0번째 출력물을 하나 꺼내고 prior에 남아 있는 값들 중에 내가 꺼낸 출력물 보다 우선순위가 높은게 없다면 출력하면 된다. 만약 있다면 제일 후 순위로 다시 ..
2020.07.20 -
[알고리즘/자바] 프로그래머스 - 이상한 문자 만들기
https://programmers.co.kr/learn/courses/30/lessons/12930?language=java 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr flag를 하나 만들어서 false면 소문자, true면 대문자를 출력하도록 했다. import java.util.*; class Solution { public String solution(String s) { String answer = ""; // 짝수 홀수를 확인하기 위한 flag boolean flag = false..
2020.07.19 -
[알고리즘/파이썬] 백준 11047번 - 동전0
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 백준에서 그리디 알고리즘으로 분류된 문제. 매순간 최적의 답들을 구하다 보면 결국 결과도 최적의 값이 될거라는 접근법이다. 주어진 금액K를 최소한의 동전을 이용해서 구해야한다. 동전의 가치가 가장 높은것을 먼저 사용(최적의 값)해서 K를 줄여나가면된다. nk = list(map(int,input().split())) k = nk[1] coin = [] for _ in range(nk[0]): c = ..
2020.07.16 -
[알고리즘/파이썬] 백준 1157 - 단어공부
1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 64%에서 틀렸다면 단어 2개짜리 넣어서 다시 테스트해보자. # 모두 대문자로 word = input().upper() # 알파벳 한개만 입력된경우. if len(word) == 1 : print(word) quit() h_word = {} # 알파벳별 dict for i in set(word): h_word[i] = 0 # 알파벳별 사용횟수 for i in word: h_word[i] += 1 # value별로 dict 정렬 h_word = sorted(h_word.items(),reverse..
2020.07.15 -
[알고리즘/파이썬] 백준 2606 - 바이러스
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어�� www.acmicpc.net 간단한 BFS문제. computers = int(input()) edge_num = int(input()) edges = [] for _ in range(edge_num): s,e = list( map(int,input().split())) edges.append([s,e]) que = [] visit = [] # 출발지 que.append(1) # BFS while True: # 큐가 비면 종료 ..
2020.07.14 -
[알고리즘/파이썬] 1697번 - 숨바꼭질
1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 www.acmicpc.net 쉽게 생각하고 갔다가 시간초과와 런타임에 두드려 맞았다. 시간 초과는 que에서 pop한 값이 이전에 한번이라도 방문했던 위치라면 이동을 수행하지 않도록 하면 해결된다. 런타임에러도 발생했는데 발생할수 있는 숫자의 범위를 제한하지 않아서 발생한 경우였다. ( 출력가능한 숫자 범위를 초과 하면서 에러 발생 ) if 2*x = 0: que.append(x-1) # 현재 depth + 1 depth.append(xc + 1) if 2*x
2020.07.13