알고리즘 21

[알고리즘][코딩 인터뷰 완전 분석 정리] 03 스택과 큐

스택 구현하기 LIFO (Last In First Out)에 따라 자료를 배열함. 접시를 쌓아두는 것과 비슷한 구조 스택 연산 pop() : 스택에서 가장 위에 있는 항목을 제거함. push(item) : item 하나를 스택의 가장 윗 부분에 추가함. peek() : 스택의 가장 위에 있는 항목을 반환. isEmpty() : 스택이 비어 있을때에 true를 반환. 배열과 달리 상수 시간에 i번째 항목에 접근할 수 없다.하지만 스택에서 데이터를 추가하거나 삭제하는 연산은 상수시간에 가능함. 배열처럼 원소들을 하나씩 옆으로 밀어줄 필요가 없다. 재귀알고리즘을 사용할 때 유용하게 사용가능. 큐 구현하기 FIFO(First In First Out)에 따라 자료를 배열. 매표소 앞에 서 있느 사람들이 움직이는 ..

Study/Alogorithm 2020.05.09

[백준] 10971번 자바 외판원 순회 2

문제 출처 https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j로 가기 위한 비용을 나타낸다. 항상 순회할 수 있는 경우만 입력으로 주어진다. www.acmicpc.net 접근 방식 및 풀이 - 완전탐색(brute force), dfs 사용하여 min 값을 계속 갱신한다. - 참고블로그 : #백준_10971 외판원 순회2 - Java 소스 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20..

[백준] 1644번 자바 소수의 연속합

문제 출처 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 www.acmicpc.net 접근 방식 및 풀이 - 주어진 n만큼의 소수를 구한다. - 구한 소수로 더해가며 n만큼 나오면 count를 증가한다. - ..

[백준] 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. 음수* 음수, 양수*양수 ..

[백준] 2110번 자바 공유기 설치

문제 출처 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 한 줄에 하나씩 주어진다. www.acmicpc.net 접근 방식 및 풀이 - 이분탐색으로 거리의 절반을 기준으로 집을 찾아갔다. - 오늘도 마이구님의 블로그 참고! https://mygumi.tistory.com/301 백준 2110번 공유기 설치 :: 마이구미 이 글은 백준 알고리즘 2110번 "공유기 설치" 를 풀이한다. 풀이 방법으로는 이분(이진) 탐색을 ..