알고리즘
[백준 11052] 카드 구매하기 (자바)
백준 11052번 카드 구매하기 (자바) 출처 www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태로만 구매할..
[백준 14501] 퇴사 (자바)
백준 14501번 퇴사 (자바) 출처 www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 ..
[알고리즘/백준] 골드 달성
저는 올해 7월 다니던 기업을 그만두고 취준을 시작하며 알고리즘을 시작했습니다. 제대로 시작한 시점은 8월 중순 정도일 겁니다. 처음 시작했을 때는 ArrayList도 잘 못쓰고, Map도 잘 못쓰는 구제불능인 상태였는데 꾸준히 문제를 풀다 보니 자연스럽게 사용할 수 있게 되었습니다. (사실 Map은 아직 연습 중..) 알고리즘 공부를 결심한 계기는 굳깃님의 블로그를 본 이후부터입니다. goodgid.github.io/Prepared-for-Coding-Test/ goodGid의 코딩 테스트 준비 방법 Index goodgid.github.io 과거에는 자신이 없어 코딩 테스트를 준비한다는 생각조차 못했지만 깔끔하게 정리를 해주셔서 저 프로세스대로 진행한다면 해낼 수 있다는 자신감이 들어 도전하게 되었습..
[백준 1003] 피보나치 함수 (자바)
백준 1003번 피보나치 함수 (자바) 출처 www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 0을 출력하고, 0을 리턴한다. fi..
[백준 1463] 1로 만들기 (자바)
백준 1463번 1로 만들기 (자바) 출처 www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 입출력 예 접근 방법 문제에 주어진 조건을 순서..
[백준 11726] 2xn 타일링 2 (자바)
백준 11726번 2xn 타일링 2 (자바) 출처 www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 문제 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 입출력 예 접근 방법 2xn 타일링 문제에서 2x2 타일이 하나 추가된 문..
[백준 18405] 경쟁적 전염 (자바)
백준 18405번 경쟁적 전염 (자바) 출처 www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치�� www.acmicpc.net 문제 NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다. 시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저..
[Heap Sort] 힙 정렬
※ 참고자료 - 유튜브(동빈나) https://www.youtube.com/watch?v=iyl9bfp_8ag&t=331s 힙 정렬이란? 완전 이진트리의 일종이다. 현재 완전히 정렬된 상태가 아니며, 중복 값을 허용한다. 병합 정렬과 퀵 정렬만큼 빠른 속도를 가지고 있다. 힙의 정의를 알아야 한다. 힙이란? 힙을 알기 위해선 이진트리를 먼저 알아야 한다. 이진트리 : 모든 노드의 자식 노드가 2개 이하인 트리 완전 이진트리 : 노드를 삽입할 때 왼쪽부터 차례대로 삽입하는 트리. 즉, 이진트리의 노드가 중간이 비지 않고 빽빽이 가득 찬 구조 힙 : 최솟값이나 최댓값을 빠르게 찾아내는 이진트리를 기반한 트리 최대 힙 : 부모 노드가 자식 노드보다 큰 힙 최소 힙 : 부모 노드가 자식 노드보다 작은 힙 문제에..