본문 바로가기

728x90

algorithm

[백준알고리즘] 10942번: 팰린드롬? -C++ [백준알고리즘] 10942번: 팰린드롬? -C++ 10942번: 팰린드롬? (acmicpc.net) 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 이전에 파이썬으로 풀다가 포기한 흔적이 있는 문제다. 문제를 보고 시간제한 있는 걸 보자마자 싸한 걸 느꼈다. 그래서 쉽게 구하는 것부터 생각하면서, 어떤 방법으로 문제를 풀어야 할지 고민했다. 그런데 생각보다 쉽게 풀렸다. 그래도 이전 파이썬 오답들이 정답 비율에 한몫했을 것 같다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 먼저, 팰린드롬은 앞으로 읽나 뒤로 읽나 똑같은 말이다. .. 더보기
[백준알고리즘] 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 처음에 메모이제이션을 사용한 방법을 사용해 각 도시에서 끝 도시까지의 최단 거리를 계산하는 방법을 사용했다. 이러한 방법은 시간 초과가 났다. 다시 생각해보니까 도시의 개수를 고려하니 시간이 훨씬 초과될만했다. 그래서 새로운 방법을 생각했고, 그리디한 방법으로 접근하면 된다는 것을 알게 됐다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제를 풀 때.. 더보기
[백준알고리즘] 1931번: 회의실 배정 -C++ [백준알고리즘] 1931번: 회의실 배정 -C++ 1931번: 회의실 배정 (acmicpc.net) 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 주어진 회의 시간들이 주어진 가운데, 가장 많은 회의를 처리할 수 있도록 사용 시간을 배정하면 된다. 예전에 파이썬으로 푼 적이 있으며, 풀이는 아래의 링크에 포스팅했다. [백준알고리즘] 1931번: 회의실배정 -Python (tistory.com) [백준알고리즘] 1931번: 회의실배정 -Python [백준알고리즘] 1931번: 회의실배정 -Python https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11).. 더보기
[백준알고리즘] 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.. 더보기

728x90