본문 바로가기

728x90

알고리즘

(28)
[백준] 11047 : 동전 0(java)-[Greedy] [백준] 11047 : 동전 0 문제 - 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력: 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력: 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 코드 해설 -> 11번 line까지는 값을 입력받아 배열에 저장하는 코드이다. -> 가지고 있는 동전의 종류 중, 가장 큰 값..
[알고리즘] 나동빈이 추천하는 알고리즘 공부 순서 [알고리즘] 나동빈이 추천하는 알고리즘 공부 순서 1. 프로그래밍 언어 기본 문법 학습 2. CodeUp 기초 100제 3. 백준 온라인 저지 알고리즘 (그리디, 기본 동적 프로그래밍, 탐색 문제 50개씩 풀어볼 것!!) 그리디 알고리즘 탐색 알고리즘(완전탐색/BFS,DFS) 기본 동적 프로그래밍 그래프 이론 중급/고급 동적 프로그래밍 문자열 4. 백준에 있는 삼성전자 소프트웨어 역량 테스트 5. 백준, 코드포스, 프로그래머스
[백준] 11399 : ATM(java)-[Greedy] [백준] 11399 : ATM 문제 - 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 ..
[백준] 5585 : 거스름돈(java)-[Greedy] [백준] 5585 : 거스름돈 문제 - 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. 예를 들어 입력된 예1의 경우에는 아래 그림에서 처럼 4개를 출력해야 한다. 입력: 입력은 한줄로 이루어져있고, 타로가 지불할 돈(1 이상 1000미만의 정수) 1개가 쓰여져있다. 출력: 제출할 출력 파일은 1행으로만 되어 있다. 잔돈에 포함된 매수를 출력하시오. 코드 update Code import java.util.*; class Mai..
[CodeUp] 1099 : [기초-2차원배열] 성실한 개미(java) [CodeUp] 1099 : 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자. 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다. 입력: 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다. 출력: 성실한 개미가 이동한 경로를 9로 표시해 출력한다. -> 해결과정 1) 2차원 배열 선언 후 입력값으로 초기화 2) 개미가 (2,2)에서 시작함으로 x,y좌표를 1로 초기화한다.(배열의 index는 0부터 시작) 3) 해당좌표가 2(도착점)이 아니고 x,y모두 9(벽에 부딪히게 됌)가 넘지않을 때 오른쪽으로 이동가..
[CodeUp] 1097 : [기초-2차원배열] 바둑알 십자 뒤집기(java) [CodeUp] 1097 : 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자. 입력: 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다. 십자 뒤집기 횟수(n)가 입력된다. 십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다. 출력: 십자 뒤집기 결과를 출력한다. 코드 import java.util.Scanner; import java.io.*; class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int x; int a,b; int..
[알고리즘] CodeUp 기초 100제 풀기 알고리즘 공부 첫 단계
[CodeUp] 1084 : [기초-종합] 빛 섞어 색 만들기(java) [CodeUp] 1084 : 주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과 총 가짓 수를 계산해보자. 입력 빨녹파(r, g, b) 각 빛의 강약에 따른 가짓수(0 ~ 128))가 공백을 사이에 두고 입력된다. 예를 들어, 3 3 3 은 각 색깔 빛에 대해서 그 강약에 따라 0~2까지 3가지의 색이 있음을 의미한다. 출력 만들 수 있는 rgb 색의 정보를 오름차순(계단을 올라가는 순, 12345... abcde..., 가나다라마...)으로 줄을 바꿔 모두 출력하고, 마지막에 그 개수를 출력한다. -> Scanner와 System.out.println()을 사용하여 문제를 풀었더니 시간초과가 발생했다. 해결방법 BufferdReader와 BufferedWriter를 사용하여..

728x90
반응형