분류 전체보기 (15) 썸네일형 리스트형 [코드 풀이] 백준 2839번: 설탕 배달 설탕배달문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)출력상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게.. [알고리즘] 그리디 알고리즘 그리디 알고리즘이란(Greedy Algorithm)?그리디 알고리즘은 동적 프로그래밍을 간단한 문제 해결에 사용하면 지나치게 많은 일을 한다는 것 때문에 고안되었습니다.그리디 알고리즘(탐욕법이라고도 한다)이란 현재리디 알고리즘이란 현재 상황에서 가장 좋은 것을 고르는 알고리즘을 말합니다.그리디 알고리즘은 3가지 단계로 구분할 수 있습니다.선택 절차(Selection Procedure): 현재 상태에서 최적의 해답을 선택한다.적절성 검사(Feasibility Check): 선택된 답이 문제의 조건을 만족하는지 검사한다.해답 검사(Solution Check): 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복한다.즉, 현재 상황에서 최선의 선택을 하는 것을 말합니다.. [GitHub] 프로필 관리하기 0. GitHub 프로필을 꾸며보자본격적으로 개발 공부를 시작하면서, 방치해두던 GitHub도 관리해볼까 한다.저장소야 뭐 개발하면서 혹은 공부하면서 작업한 작업물들을 잘 정리해서 올리면 되는 것이니 후순위로 빼기로 하고, 우선 프로필을 관리해보고자 한다.대다수의 개발자분들이 GitHub를 사용하는만큼 프로필은 내가 얼마나 노력했는지, 어떤 기술 스택을 사용할 줄 아는지, 얼마나 깊이 있게 공부하고 있는지 간략하게 소개하는 중요한 소통 창구라고 생각한다.그래서 한눈에 확 들어오면서도 보기 좋게 꾸미는게 중요한 것 같다.마침, GitHub에서는 본인의 닉네임으로 저장소를 생성하면 계정 프로필에 README.md 파일을 추가할 수 있도록 지원해주고 있다.그 부분을 사용하여 프로필을 꾸며보자.1. 프로필 저장.. [Portal IT] 프로젝트 준비하기 0. 프로젝트 사전 준비프로젝트를 본격적으로 시작하기 전에 준비해야할 것이 있다.먼저, GitHub에 Repository를 생성하고 로컬 저장소와 연동을 해야 한다.그래야 내가 작업한 결과물을 실시간으로 GitHub에 올릴 수 있고, 이를 활용하여 포트폴리오도 제작할 수 있기 때문이다.물론 기업에서도 GitHub를 활용하여 업무를 보기 때문에 필수로 사용할 줄 알아야 한다.1. 이번에는 명령어로!기존에는 Sourcetree로 Github에 Pull/Push를 했었다.Soutcetree는 GUI로 편하게 GitHub 작업을 할 수 있게 도와주는 프로그램이다.소스트리 예시하지만 이렇게 하니까 기본적인 Git명령어 조차 모르게 되었다.이건 문제가 있다고 생각한다.기본적으로 명령어를 사용할 줄 알고나서 GUI로.. [알고리즘] 슬라이딩 윈도우 슬라이딩 윈도우(Sliding Window)란?슬라이딩 윈도우는 배열, 리스트 또는 문자열과 같은 연속된 데이터 구조에서 부분집합을 효율적으로 탐색하거나 계산하기 위해 사용되는 알고리즘 기법이다.특히, 고정 길이 또는 가변 길이의 부분 집합에 대해 반복적으로 계산할 때 유용하다.1. 기본 원리슬라이딩 윈도우는 데이터를 처음부터 끝가지 순회하면서, 고정된 크기 또는 조건에 따라 움직이는 윈도우를 유지한다.윈도우(Window): 현재 부분 집합을 나타내는 데이터의 범위(시작점과 끝점으로 표현).슬라이딩: 윈도우를 한 요소씩 오른쪽으로 이동시켜 새 값을 포함하거나 오래된 값을 제외. 2. 작동 원리초기화시작점과 끝점을 설정한다.필요한 경우 결과를 저장하거나 현재 상태(합, 최대값)를 기록할 변수를 초기화 한다.. [알고리즘] 소수 구하기 소수란?소수: 1과 자기 자신만을 약수로 갖는 수. 예시3의 약수는 1과 3이므로 소수이다.11의 약수는 1과 11이므로 소수이다.그렇다면 1은 어떨까?1은 소수일까?결론부터 말하자면 1은 소수가 아니다.소수가 되려면 약수가 2개 있어야 하는데 1은 약수가 하나이므로 소수가 될 수 없다. 제곱근이란?제곱근(square root): 어떤 수의 제곱값을 만들어내는 숫자. 예시2 * 2 = 4 이므로, 4의 제곱근은 2이다. 소수와 제곱근소수를 구하기 위해선 제곱근까지만 확인하면 된다.why?예를 들어 보자.어떤 수 n이 소수인지 확인하려고 한다.n = 28이라면,28의 약수는 1, 2, 4, 7, 14, 28이 있다.약수는 좌, 우의 개수가 대칭되게 존재한다.즉, 28이 2로 나누어 떨어지면 14로도 나누어.. [알고리즘] 유클리드 호제법 유클리드 호제법의 원리두 수 A와 B의 최대공약수는 A % B(A를 B로 나눈 나머지)와 B의 최대공약수와 같다는 것을 이용한다.이 과정을 반복해서 B = 0이 되면, 그 때의 A가 두 수의 최대공약수이다. 예시A = 56, B = 42의 최대공약수를 구해야 한다.A % B를 구한다:56 % 42 = 14(56을 42로 나누면 나머지는 14이다.)이제 A = B, B = A % B로 초기화 한다.A = 42, B = 12가 된다.다시 나머지를 구한다.42 % 14 = 0B = 0이 되었으므로, 현재의 A = 14가 최대 공약수가 된다. public static int gcd(int a, int b) { while (b != 0) { // 나머지가 0이 될 때까지 반복 int temp =.. [알고리즘] 알고리즘 공부를 시작해 보자 코딩테스트? 그게 뭔데?이제부터 알고리즘 공부를 해보려고 한다. (알고리즘 공부라 말하고 코딩테스트 대비라고 한다.)그동안 코딩테스트는 생각도 하지 않고 있었다.코딩테스트의 존재도 몰랐다고 보는 것이 더 맞겠다.그러나 부트캠프에 지원해보고자 여기저기 찾아본 결과 웬만한 부트캠프는 전부 SW적성진단이라는 것을 실시하고 있었다.SW적성진단이 무엇인가 찾아보니, 코딩테스트였다.나는 바닥이다.코딩테스트? 기존 정규 교과 수업만 듣던 나는 이 코딩 테스트라는 것을 굉장히 쉽게 생각했었다.그래서 한 사이트에 들어가 Lv.3문제를 무작정 풀어보니 1시간 동안 손도 못 대고 뒤로가기를 눌렀다.그 상태에서 다른 사람들이 푼 코드와 질문게시판 등을 찬찬히 둘러 보았다.그랬더니 웬걸 DFS, BFS, DP, 슬라이딩 윈도우.. 이전 1 2 다음