Competition/Baekjoon 85

[백준] 1476번 자바 날짜계산

문제 출처 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1 www.acmicpc.net 접근 방식 및 풀이 - E,S,M 모두 특정값 이상이면 1로 나타낸다. - 3개의 변수가 동시에 1이 되는 경우를 year에..

[백준] 11399번 자바 ATM

문제 출처 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 접근 방식 및 풀이 - Greedy 알고리즘의 전형적인 문제 - 문제에서도 나왔지만 힌트는 정렬이다. 오름차순으로 정리하여 누적값을 새로운 배열에 넣는다. - 새로운 배열에 있는 값의 합이 ATM의 최소값이다. 소스 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) ..

[백준] 10610번 자바 30

문제 출처 https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는 www.acmicpc.net 접근 방식 및 풀이 - 30 배수의 수는 10배수이면서 3의배수이면 만족한다. - 10배수는 int 배열중 0이 있는지 없는지..

[백준] 11047번 자바 동전 0

문제 출처 https://www.acmicpc.net/problem/11047 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 접근 방식 및 풀이 - 오름차순으로 되어 있는 동전을 내림차순으로 받기위해 n-1부터 배열에 다시 담음. - k원과 배열의 동전의 금액중 k가 더 크면 나눌수 있다. - 나눠서 몫은 count에 나머지는 k에 다시 넣는다. 소스 코드 import java.io.BufferedReader; import java.io.IOEx..

[백준] 커리큘럼 독학 알고리즘 공부

알고리즘을 공부를 위해 백준에서 문제를 풀어보려고 마음을 먹었다. 집중공부시간을 1달정도 잡고, 안경잡이 개발자 youtube 와 알고리즘 문제풀이(PS) 시작하기 블로그에서 소개해준 커리큘럼을 따라서 진행했다. 문제중에는기초적인 출력문제부터 수열에 관련된 문제등등 수학적 지식이 필요한 문제도 있었다. 알고리즘만 공부할수가 없는 상황이라 하루 평균 2~4시간씩 4주를 목표로 잡고 진행했지만, 실제로 마친건 5주정도 걸린것 같다. 공부 기간 2020.3.2 ~ 2020.4.6 코드 모음 Git 주소 : https://github.com/hanbitlog/studybackjun 커리큘럼 정리 내가 백준님과 참고한 블로그에서도 제시한 공부방법은 하나의 문제는 2시간을 넘기지 않으며 이해가 되지 않으면 다른 블..

[백준] 2875번 자바 대회 or 인턴

문제 출처 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다. 여 www.acmicpc.net 접근 방식 및 풀이 - 풀이법에는N,M을 줄여가거나 K를 줄여가며 조건을 체크하는 방법이 있다. - N,M을 줄여가는것..

[백준] 1783번 자바 병든 나이트

문제 출처 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 접근 방식 및 풀이 - 너무 어렵다... 나중에 다시와서 볼 문제~ - 아래 블로그에.. 자세하게 설명해주신다. https://do-rang.tistory.com/70 백준 #1783 / 병든 나이트 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 128 MB 1260 523 466 41.533% 문제 병든 나이트가 N * M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와.. do-rang.t..

[백준] 1744번 자바 수 묶기

문제 출처 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열 www.acmicpc.net 접근 방식 및 풀이 - Greedy 알고리즘 이용 - 아래 조건을 만족하는 알고리즘 사용 조건 1. 음수* 음수, 양수*양수 ..

[백준] 11729번 하노이의 탑

문제 출처 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5 www.acmicpc.net 접근 방식 및 풀이 - 하노이탑.. 손으로 해봤지만 시간이 오래걸릴 것 같아 유투브 강의를 참고하였다. > 정..

[백준] 11728번 자바 배열 합치기

문제 출처 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다. www.acmicpc.net 접근 방식 및 풀이 - 분할 정복에서 이미 분할된 배열을 합치는 과정을 한다고 생각하면 된다. - 배열에 담아 순서대로 정렬한다. - 두배열의 원소를 서로 비교하여 작은것을 새로운 배열에 하나씩 담는다. - 어느 한쪽이 남은 것은 새로운 배열에 모두 담는다. (순서를 보장하기 때문에 그대로 담아준다.) 소스 코드 import java..