분류 전체보기(350)
-
[백준 BOJ] 9655번 돌 게임 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 접근 방법 - 게임 이론의 기초 문제 백준의 9655번 문제는 간단한 게임 이론의 원리를 이용하여 해결해야 하는 기초 문제이다. 해당 문제는, 주어진 규칙대로 게임을 진행했을 시 이기는 사람을 출력해야 하는 문제이다. 이 문제는 DP로 해결하는 방법도 있지만, 필자는 게임 이론을 이용하여 해결해보았다. (게임 이론에 대한 설명은 추후에 자세한 내용을 가지고 글을 작성해보고자 한다.) 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해보길 바란다. 아래에, 필자가 게임 이론에 ..
2022.10.27 -
[백준 BOJ] 3273번 두 수의 합 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 접근 방법 - 정렬을 응용한 두 포인터 문제 백준의 3273번 문제는 정렬과 함께 해결해야 하는 두 포인터 알고리즘 문제이다. 해당 문제는, 주어진 숫자들 중 2개의 합이 특정 입력값과 같은 경우가 몇 개인지를 구하여 출력해야 하는 문제이다. 이 문제는 두 포인터 알고리즘을 이용하여 해결해야 하는데, 이와 비슷한 유형의 문제에 대해..
2022.10.26 -
[백준 BOJ] 9654번 나부 함대 데이터 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/9654 9654번: 나부 함대 데이터 나부 행성의 함대의 정보를 아래와 예제 출력과 같은 표로 출력한다. 처음 두 열의 너비는 문자 15개, 세 번째 열은 11개, 마지막 열의 너비는 10개이다. www.acmicpc.net 접근 방법 - 기본적인 출력문 작성 문제 백준의 9654번 문제는 기본적으로 출력문을 작성하여 해결할 수 있는 문제이다. 해당 문제는, 출력 예시에 나와있는 대로 나부 행성의 함대 정보를 출력해야 하는 문제이다. 별다른 입력 없이 출력만 원활히 수행하면 되는 문제이기 때문에, 사용하는 언어의 기본적인 문법만 잘 인지하고 있다면 아주 쉽게 풀 수 있는 문제로 예상된다. 다만, 끝 부분의 공백 출력도 적절히 해주어야 ..
2022.10.25 -
[백준 BOJ] 2018번 수들의 합 5 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 접근 방법 - 두 포인터의 기본 문제 백준의 2018번 문제는 두 포인터 알고리즘을 사용하여 해결해야 하는 기초 문제이다. 해당 문제는, 연속된 숫자들의 합이 입력값인 경우의 수가 얼마인지를 구하여 출력해야 하는 문제이다. 여기서 두 포인터란, 진짜 포인터를 사용하는 것이 아니라, 2개의 변수로 배열의 인덱스를 가리키며 해결하는 원리를 뜻한다. 이에 비슷한 원리로 ..
2022.10.25 -
[백준 BOJ] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 접근 방법 - 기본적인 사칙연산 문제 백준의 3003번 문제는 기본적인 사칙연산을 이용하여 해결해야 하는 문제이다. 해당 문제는, 원래 있어야 하는 체스 검은색 피스와 지금 가지고 있는 체스 검은색 피스 간의 차이를 구하여 출력해야 하는 문제이다. 원래 있어야 하는 피스의 개수가 문제에 주어져있기 때문에, 여기에 각 입력값을 빼서 출력만 하면 되는 문제이다. 그렇기 때문에 사칙연산을 구현할 줄만 있다면 쉽게 ..
2022.10.20 -
[백준 BOJ] 2748번 피보나치 수 2 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 접근 방법 - 다이나믹 프로그래밍(DP) 기초 문제 백준의 2748번 문제는 다이나믹 프로그래밍(DP)의 원리를 이용한 기초 문제이다. 해당 문제는, 입력값에 대해 대응되는 피보나치 수의 값을 구하여 출력해야 하는 문제이다. 피보나치의 수가 DP의 가장 기본적인 문제라고 하는데, 사실 필자는 그 의견에 완전히 동의하지는 못하고 있다. 심지어 백준에는 ..
2022.10.18