백준 문제풀이

백준 문제풀이/실버4

백준 2164번 - 카드2

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net queue를 활용하는 문제이다. 해당 문제 내용대로 1. 맨 앞에 것을 빼고 (pop) 2. 그 다음 맨 앞 것(queue.front)을 뒤로 밀어넣고(push) 3. 다시 맨 앞 것을 빼면 된다.(pop) 이 반복을 1개 남을때까지 반복하면 된다. #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::s..

백준 문제풀이/브론즈1

백준 11050번 - 이항계수 1

https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); int N, K; cin >> N >> K; int temp = 1; int div = 1; for (int i = 1; i

백준 문제풀이/브론즈2

백준 2798번 - 블랙잭

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 약간 확통의 조합 느낌이 물씬 난다. 서로 다른 3개를 골라야하니, 중복되서는 안됨. 이건 뭐.. 그냥 다 해봐야한다. 경우의 수 다 따져보고 그 중에 M값에 작으면서 가장 가까운 거 출력하면 되겠다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); ci..

백준 문제풀이/실버5

백준 10814번 - 나이순 정렬 (p.s. 배울 게 많군)

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 사고과정은 크게 두가지이다. 1. 변수가 두개이고 서로 연동되어 있으니, pair을 사용해볼 것인가 2. 아니면 그냥 클래스나 구조체로 묶어서 활용할 것인가 사실 풀면서 1번 생각이 났지만 pair을 사용해본 적이 없어서 문제는 클래스로 풀었지만 구글링해서 배운 결과를 공유해볼까한다. 1. pair을 활용 #include #include #include #include using namespace st..

백준 문제풀이/브론즈2

백준 2231번 - 분해합

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 사고과정) 심플하다. 그냥 해당 수 + 각 자리의 숫자 더하면 된다. 주의할 점이라면 반복문에서 선언한 i를 식으로 활용하면 i 값이 변경되서 반복문이 이상해지므로 index라는 새로운 변수를 선언해주었다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout..

백준 문제풀이/실버4

백준 1049번 - 기타줄

https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 사고과정) 우선 줄의 갯수, 즉 N이 6이하라면 케이스가 두 가지이다. 1. 그냥 6개짜리 세트 하나 구매 2. 한 개짜리 N개 만큼 구매 N이 6 초과라면 1. 6개짜리 세트로 떼우기 2. 한개짜리 N개 만큼 떼우기 3. 6개짜리로 살 수 있는 만큼 사고 한 개짜리 나머지 사기 아마 정답률이 낮은건 1. 무조건 같은 브랜드로 사야한다는 착각 2. 6개짜리 세트로만 충족할 수 있다는 걸 놓친 ..

백준 문제풀이/실버5

백준 10989번 - 수 정렬하기 3 (using counting sort)

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 시간도 시간인데 메모리 제한이 8mb이다. 일반적으로 값을 입력받아서 이걸 배열에 저장해서 다른 정렬방법을 사용하면 배열에 저장하고 새로운 배열 만들고 그러는데 메모리가 너무 초과된다. 그러던 중 알아보다가 counting sort, 이번 알분에서 배운 알고리즘을 사용할 수 있는 문제라 사용해보았다. 우선 counting sort는 말 그대로 해당 숫자가 몇 개인지 세는 것이다. 예를 들어 내가 5개를 입력한다 가정..

백준 문제풀이/실버5

백준 2609번 - 최대공약수와 최소공배수(with 유클리드 호제법)

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 사고과정1) 브루트포스 알고리즘, 즉 모든 경우의 수를 다 생각해서 코딩했다. 입력 받은 두 수가 같으면, 최대공약수와 최소공배수는 한 수일 것이고 만약 두 수가 서로소라면, 최대공약수는 1이고 최소공배수는 두 수의 곱인 경우를 따로 조건문으로 처리했다. #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); int a, b; cin >> a >>..

void_melody
'백준 문제풀이' 카테고리의 글 목록 (6 Page)