본문 바로가기

728x90

BOJ

[백준알고리즘] 2407번: 조합 -C++ [백준알고리즘] 2407번: 조합 -C++ 2407번: 조합 (acmicpc.net) 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 이번 문제는 다른 분의 코드를 참고해서 풀었다. - 참고 : [백준] 2407번 조합 - C++ - DGOS | 동꿀오소리 (donggoolosori.github.io) 문제를 보고, unsigned long long 이라도 연산 범위를 벗어날 것이라는 것은 알았다. 대충 \(100!/50!/50!\) 해봐도 결괏값이 어마어마하게 컸다. 하지만, 여기서 '문자열'로 큰 수 처리를 하는 것을 기억하지 못했다. 그래서 다른 분들의 코드를 참고했다. 아직 예전만큼 코테를 자연스럽게하려면 많이 남았다.. 더보기
[백준알고리즘] 11660번: 구간 합 구하기 -C++ [백준알고리즘] 11660번: 구간 합 구하기 -C++ 11660번: 구간 합 구하기 5 (acmicpc.net) 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 오랜만에 DP 문제를 풀어봤다. 그래서 쉬운 난이도를 골랐는데, 너무 쉬운 걸 고른 것 같기도 하다. DP는 점화식만 잘 구하면 쉽게 문제를 풀 수 있다. 이 문제에서는 2개의 점화식을 구해야 한다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 이번 문제는 행렬의 \((x1, y1)\)부터 .. 더보기
[백준알고리즘] 18870번: 좌표 압축 -C++ [백준알고리즘] 18870번: 좌표 압축 -C++ 18870번: 좌표 압축 (acmicpc.net) 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 좌표 압축 문제를 풀었는데.. 오랜만에 푸느라 헤더 관련해서 하나도 기억이 안 난다. 그래서 실버 등급 문제임에도 시간 초과로 인해 다른 글을 찾아보고 풀 수 있었다. 2가지 정도의 풀이 방법이 공유되고 있었는데, 그중 하나의 방법을 이용해서 문제를 해결했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제.. 더보기
[백준알고리즘] 13305번: 주유소 -C++ [백준알고리즘] 13305번: 주유소 -C++ 13305번: 주유소 (acmicpc.net) 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 처음에 메모이제이션을 사용한 방법을 사용해 각 도시에서 끝 도시까지의 최단 거리를 계산하는 방법을 사용했다. 이러한 방법은 시간 초과가 났다. 다시 생각해보니까 도시의 개수를 고려하니 시간이 훨씬 초과될만했다. 그래서 새로운 방법을 생각했고, 그리디한 방법으로 접근하면 된다는 것을 알게 됐다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제를 풀 때.. 더보기
[백준알고리즘] 12865번: 평범한 배낭 -C++ [백준알고리즘] 12865번: 평범한 배낭 -C++ 12865번: 평범한 배낭 (acmicpc.net) 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 대표적인 Knapsack 알고리즘의 문제다. 조합의 문제고, 동적계획법(DP; Dynamic Programming)을 사용하는 대표적인 문제다. 아래의 두 링크는 위키피디아인데 영어가 못 알아먹겠어도 내용이 많다. 잘 정리된 블로그들도 많으니 참고하면 좋을 듯하다. Knapsack problem .. 더보기
[백준알고리즘] 1912번: 연속합 -C++ [백준알고리즘] 1912번: 연속합 -C++ 1912번: 연속합 (acmicpc.net) 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 주어진 수열에서 연속된 부분 수열을 뽑아냈을 때 가장 연속합이 큰 값을 구하면 된다. 예전에 파이썬으로 많이 풀었던 문제다. 그래서 그런가 이번에도 뭔가 아이디어가 쉽게 떠올랐다. 많이 인상 깊게 푼 문제였나 보다. [백준알고리즘] 1912번: 연속합 -Python (tistory.com) [백준알고리즘] 1912번: 연속합 -Python [백준알고리즘] 1912번: 연속합 -Pyth.. 더보기
[백준알고리즘] 9251번: LCS -C++ [백준알고리즘] 9251번: LCS -C++ 9251번: LCS (acmicpc.net) 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 두 문자열이 주어졌을 때 구할 수 있는 최장의 공통 부분 수열을 구하는 문제다. 예전에 파이썬으로 풀었던 문제다. 그때 당시에 풀기 위해서 굉장히 시간을 많이 투자했던 것으로 기억한다. 그러다 보니 오늘 풀 때도 전보다는 굉장히 수월하게 풀었다. 물론 한 번에 푼 건 아니었고.. 예전과 같은 문제를 거치면서 통과했다. 그러면서 느.. 더보기
[백준알고리즘] 2565번: 전깃줄 -C++ [백준알고리즘] 2565번: 전깃줄 -C++ 2565번: 전깃줄 (acmicpc.net) 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 주어진 전깃줄 중에서 최소의 전깃줄을 제거해 겹치는 선이 없게 만드는 문제다. 예전에 파이썬으로 풀었던 적이 있는 문제다. 예전에 풀었던 코드를 보니 '역시 파이썬은 코드가 쉽구나'라는 생각과 동시에 '이때는 왜 이리 쉽게 푼 것 같지..'라는 생각이 들었다. 그만큼 오늘 바로 풀어내지는 못했었다. [백준알고리즘] 2565번: 전깃줄 -Python (tistory.com) [백준알.. 더보기

728x90