본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

파일 경로 개념잡기 (절대경로와 상대경로) 프로그래밍을 할 때 외부 파일을 읽어야 하는 상황에 많이 직면하게 된다. 외부 파일을 읽기 위해서는 파일 경로를 입력하면 되는데, 파일 경로를 철자 하나라도 잘못 쓰면 파일을 읽을 수 없다. 처음 접해봤을 때는 까다로울 수 있는데 이해만 하면 쉬우므로 프로그래머라면 무조건 짚고 넘어가야할 개념이다. 이 포스팅에서는 혼동하기 쉬운 파일 경로 개념을 다룰 것이다. 이해를 돕기 위해 개념을 설명하기 전에 몇 가지 폴더 정의를 해보겠다. 현재 폴더의 상위 폴더를 Parent 폴더, Parent 폴더의 상위 폴더를 Grantparent 폴더라고 하자. 그리고 현재 폴더의 하위 폴더를 Child 폴더, Child 폴더의 하위 폴더를 Grandchild 폴더라고 하자. 즉 상위 부모 순으로 나열하면 Grandpare.. 2020. 8. 27.
[동적계획법, 난이도 중] 백준 14501번 퇴사 회사에서 매일 회의가 열리고 각 회의의 기간과 받는 금액이 주어졌을 때, 최대 수익을 계산하는 문제이다. 각 Day마다 열리는 회의가 끝난 후 새로 시작할 수 있는 날을 기록해두고, 현재 Day를 기준으로 이미 끝나 있는 회의 중에서 누적 최대 수익이 큰 경우를 고른 뒤에, 현재 날짜의 회의를 진행하는 식으로 접근하면 된다. 아래 표를 보면 이해가 더 잘될 것이다. S0은 각 Day마다 현재 날짜에 회의 기간을 더한 값들이고, 회의가 끝난 날+1 = 새로 시작할 수 있는 날을 의미한다. 1일차의 경우에는 3일에 걸쳐 회의가 진행되므로 4일차에 새로운 회의를 시작할 수 있다. 즉, S0[1]=4 가 된다. 이런식으로 S0는 쉽게 계산 할 수 있고, S1에 해당하는 DP는 2일차 때부터 진행하면 된다. 현재.. 2020. 8. 26.
[동적계획법, 난이도 중] 백준 9461번 파도반 수열 DP는 점화식은 짧지만 생각이 결론에 도달하여 점화식을 만드는데까지는 시간이 다소 오래 걸린다는 특징이 있다. 특히 이런 도형문제가 그런 편인 것 같은데, 도형쪽으로 센스가 있다면 쉽게 풀 수 있을 것이다. 기준이 되는 첫 삼각형은 크기가 1인 정삼각형이라고 했는데, 아래에 빨간 테두리로 쳐 둔 정삼각형이 기준인 것 같다. 그래야 시계 방향으로 자연스럽고 보기좋게 갱신이 가능하다. 여기서 잘 보면 4번째 삼각형을 처음 포함했을 때부터 쭉 오각형 형태가 유지되며, 6번째 삼각형을 포함하게 될 때부터 새롭게 포함되는 삼각형은 2개의 삼각형 변과 인접하게 된다. 그 2개의 삼각형은 i를 현재 포함하려는 삼각형이라고 하면, i-5번째 삼각형과 i-1번째 삼각형에 해당된다. 이해를 돕기 위해 아래 그림을 첨부하였.. 2020. 8. 25.
[동적계획법, 난이도 중] 백준 11053번 가장 긴 증가하는 부분 수열 제한 시간은 1초며, N의 범위가 (1 ≤ N ≤ 1,000) 으로 좁은 편이기 때문에 O(N^2) 까지 쓸 수 있다. 그래도 이 문제는 1차원 배열의 DP로 풀 수 있다. 첫 INPUT에 대한 DP의 첫 인덱스 값을 1로 두며 시작한다. 그리고 이 조건에 따라 뒤 INPUT값들에 대해 DP를 수행해주면 된다. 현재 INPUT값보다 작은 모든 이전 INPUT값들의 각 DP값들중 최댓값에 1을 더한 값을 현재 DP값으로 지정한다. 만약 현재 INPUT값이 30이라면 이전 INPUT값들은 각각 10, 20, 10이고, 이들의 각 DP값은 1,2,1이다. 1,2,1의 최댓값은 2이기 때문에 이에 1을 더한 3을 현재 DP값으로 지정하는 것이다. 현재 INPUT값이 지금까지 나온 INPUT값들중 최솟값일 경우가.. 2020. 8. 24.
[그리디, 난이도 중하] 백준 2217번 루프 n개의 연결된 루프에 매댈 수 있는 최대 무게를 구할 수 있어야 한다. 이 문제의 예제는 부실하므로 버틸 수 있는 최대 중량이 각각 7, 15, 30, 11, 5인 루프 5개를 준비하였다. 일단 이 루프를 내림차순으로 정렬했다. 30, 15, 11, 5, 7 먼저 최대 중량이 30인 밧줄은 당연히 중량이 30인 물체까지 버틸 수 있다. 그렇다면 1,2번째로 최대 중량이 높은 밧줄인 30, 15를 묶으면 어디까지 버틸 수 있을까? k개의 루프가 묶인다면 중량은 k분의 1로 나뉘게 된다고 했다. 2번째로 최대 중량이 높은 15에 2를 곱한 30이 최대가 된다. 중량이 30인 물체는 저 밧줄들에 각각 15, 15씩 분배가 되므로 30이 최대가 된다는 것을 검산했다. 그렇다면 1,2,3번째로 최대 중량이 높은 .. 2020. 8. 22.
Fontello 아이콘으로 실제 Youtube 연결 하기 http://fontello.com/ Fontello - icon fonts generator This site will not work if cookies are completely disabled. {"assets_hash":"a3410d362ed25bd7cfd803daf277b9d7","page_data":{},"locale":"en-US","layout":"fontello.layout"} fontello.com 확대 해도 깨지지 않는 아이콘을 다운받는 꿀사이트 웹페이지를 한 층 더 멋지게 만들어준다. ​ 원하는 폰트를 클릭하고 download webfont를 누르면 파일이 다운된다. 이 두 폴더를 자신이 원하는 위치에 놓고 사용하면 된다. demo라는 웹사이트에 들어가면 아이콘명을 확인할 수 있다.. 2020. 8. 21.
[그래프, 난이도 중상] 백준 1005번 ACM Craft 이 문제는 위상 정렬을 이용하여 풀어야 한다. 위상 정렬이란 자신을 가리키는 노드들이 전부 자신 노드에 방문을 했을 때 다음 노드로 이동할 수 있게 하는 알고리즘이다. 즉, 진입차수가 0인 노드들을 큐에 넣으며 시작하고, 큐에서 꺼낸 노드의 인접노드의 진입 차수를 1씩 감소시키며, 이 결과로 진입 차수가 0이 된 노드들을 다시 큐에 넣는 과정을 반복하는 알고리즘이다. 이전 건물을 다 짓기 전까지는 현재 건물을 짓지 못한다는 조건이 있으므로 위상 정렬을 이용해야 한다는 것이다. 그리고 시간 초과가 나지않게 동적계획법(DP)도 병행하였다. 위상정렬을 수행하며, 이 건물(노드)을 짓는데 걸리는 누적 시간을 업데이트 해주는 것이다. 이전 건물들이 모두 세워져야 현재 건물을 세울 수 있기 때문에 max함수를 이용.. 2020. 8. 20.
[그래프, 난이도 하] 백준 2606번 바이러스 BFS, DFS 어느 것을 이용해도 좋다. 자신 1번 컴퓨터를 제외하고 얼마나 많은 컴퓨터를 탐색했는지 카운트만 시켜주면 된다. 그리고 간선 정보 넣을 때 양방향 그래프로 처리해줘야 한다는것을 잊지말자. 실수로 단방향으로 해주면 이렇게 틀린다.. 그래프 카테고리에서 이 문제보다 쉬운 문제는 포스팅하지 않을 것이다. #include #include #include #include #include #include #include using namespace std; vector a[101]; queue q; bool visited[101]; int maxi(int a,int b){ if(a>b) return a; else return b; } int mini(int a,int b){ if(a> n; cin .. 2020. 8. 20.
[동적계획법, 난이도 중상] 백준 2839번 설탕배달 용량이 각각 3,5인 봉지가 있을 때, 얼마나 적은 봉지로 설탕을 모두 담을 수 있는가에 대해 물어보는 문제이다. 현재 설탕의 양이 i라고 했을 때, i-3만큼 이미 배분되어 있는 봉지수가 x이면 3만큼의 설탕을 용량이 3인 봉지 하나에 담아서 x+1만큼의 봉지수를 만들 수도 있고, i-5만큼 이미 배분되어 있는 봉지수가 y이면 5만큼의 설탕을 용량이 5인 봉지 하나에 담아서 y+1만큼의 봉지수를 만들 수도 있다. 이 문제에선 최소 봉지 수를 이용해야 하므로 위 2가지 경우중 최솟값을 DP[i]값에 넣어주면 된다. 그런데 설탕양이 i-3 혹은 i-5 일 때 배분을 못한 상황이었다면 얘기는 달라진다. 둘다 배분을 못했다면 설탕양 i에 대해서는 아예 배분을 못할 것이고, i-3만큼만 배분을 할 수 있다면 i.. 2020. 8. 20.