목록BOJ (40)
소소한 개발이야기
📄 Mini Fantasy War [백준 12790번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 단순 구현 문제 입니다. 주어지는 조건과 입력을 이해하고 처리할 수 있으면 쉽게 해결 할 수 있습니다. 문제에서 단, HP와 MP는 1보다 작은 경우 1로 간주하며, 공격력은 0보다 작은 경우 0으로 간주한다. 방어력은 음수 여부에 상관하지 않는다. 이 부분을 따로 처리하여 계산하면 쉽게 해결 할 수 있습니다. 저는 hp, mp를 계산하는 함수, attack을 계산하는 함수, guard를 계산하는 함수를 만들어 base 값들을 설정한 뒤 문제에서 제시하는 전투력 = 1 * (HP) + 5 * (MP) + 2 * (공격력) + 2 * (방어력) 에 대입하여 문제를 해결하였습니다. 글보단 코드를 보면 더 이..
📄 방학 숙제 [백준 5532번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제는 단순 반복문을 통해 해결하였습니다. 문제에서 주어지는 변수들은 다음과 같습니다. 총 방학 일수 풀어야 할 총 국어 페이지 풀어야 할 총 수학 페이지 하루에 풀 수 있는 국어 페이지 하루에 풀 수 있는 수학 페이지 문제 설명에서 주어지는 순서가 총 수학페이지, 총 국어 페이지, 하루 국어 페이지, 하루 수학 페이지 이지만, 입력 순서는 총 국어페이지, 총 수학페이지, 하루 국어 페이지, 하루 수학 페이지 입니다. 입력 부분만 주의한다면 쉽게 해결할 수 있습니다. (제가 실수를 해서..) 각 과목별 총 풀어야 할 페이지 -= 하루 가능한 페이지를 반복하며 방학 일수를 하루씩 빼면 됩니다. 이때 종료 조건은 각 풀어야 할 ..
📄 에라토스테네스의 체 [백준 2960번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제에서 에라토스테네스의 체를 구현하는 방법을 자세하게 설명해 주었으므로 조건을 그대로 코드로 구현할 수 있는지에 대한 문제입니다. 먼저 문제의 조건을 살펴보겠습니다. 문제 조건 2부터 N부터 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은수를 찾는다. 이것을 P라 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. 에라토스테네스의 체는 소수를 빠르게 구할 수 있는 알고리즘 중 하나입니다. 문제가 일반적인 소수를 구하는 것과 다른 것중 하나는 소수인 P도 지우기 때문에 소수 또한 지워진 수에 포함..
📄 한 줄로 서기 [백준 1138번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제는 그리디 알고리즘을 이용해 해결하였습니다. 문제의 조건인 키가 1인 사람부터 차례대로 정보가 주어지는 점을 이용하여 그리디 알고리즘을 적용할 수 있습니다. 먼저 문제의 조건을 살펴보겠습니다. 문제 조건 총 N명의 사람수가 주어지며, 키는 1부터 N까지 모두 다르다. 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. 줄을 선 순서대로 키를 출력하라. 문제의 조건에서 키가 1인 사람부터 차례대로 주어진다는 점이 가장 중요한 포인트 입니다. 문제에서 요구하는 것은 내가 설 위치를 정하는 것 입니다. 자신보다..
📄 암호 만들기 [백준 1759번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제는 백 트레킹(Back Tracking)을 이용해 해결하였습니다. 먼저 문제의 조건을 살펴보며 해결방법을 알아보겠습니다. 문제 조건 암호는 서로 다른 L개의 알파벳 소문자들로 구성된다. 최소 한 개의 모음과 최소 두개의 자음으로 구성되어 있다. 암호를 이루는 알파벳이 오름차순으로 배열되어 있다. 주어지는 문자의 종류는 C가지가 있다. 가능한 모든 암호를 구하라 문제의 조건에서 알파벳이 오름차순으로 배열 되어 있다는 점이 문제를 푸는데 조금 쉽게 접근할 수 있게 해줍니다. 암호를 만들 수 있는 모든 경우의 수를 따져가며(DFS) 조건에 부합하는 암호만 출력 해주면 해결 할 수 있습니다. 문제 풀이 순서 주어진 ..
📄 곱셈 [백준 2588번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제는 단순 구현을 통해 문제를 해결하였습니다. 정말 간단한 수학 연산을 프로그래밍으로 옮길 수 있는지 물어보는 문제였습니다. 먼저 문제 조건을 보겠습니다. 문제 조건 세 자리수 자연수 2개가 주어진다. 두 자연수의 곱셈 과정에서 나오는 수들을 출력하라. 두 자연수의 곱셈 값을 구하여라. 곱셈의 방식을 모르시는 분은 없다고 생각하겠습니다. 첫 번째 자연수 * 두번째 자연수의 각 자리수가 각 과정에서 나오는 수들 입니다. 마지막 값은 첫 번째 자연수 * 두 번째 자연수를 출력하면 됩니다. 문제를 풀기 위해선 자연수의 각 자리수를 뽑아낼 수 있는지가 주요 관건이었습니다. * 자연수의 각 자리수 뽑아내기 temp : 1의 자..
📄 셀프 넘버 [백준 4673번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제는 에라토스테네스의 체의 개념을 활용하여 문제를 해결하였습니다. 먼저 문제의 조건을 살펴보며 해결방법을 알아보겠습니다. 문제 조건 d(n) = n + n의 각 자리수 n은 d(n)의 생성자라고 한다. n을 시작으로 d(n), d(d(n)), ... 과 같은 무한 수열을 만들 수 있다. 생성자가 없는 수는 셀프 넘버라고 한다. 10000이하의 모든 셀프 넘버를 찾아라. 문제를 풀기 위해선 d(n)을 이해해야 합니다. d(n)은 문제에서 제시된 것과 같이 d(n) = n + n의 각 자리수 입니다. 그렇다면 여기서 생각해봐야 할 점은 n으로 인해 d(n)이 만들어 집니다. 또한 d(n)은 n보다 무조건 커지게 됩니..
📄 캥거루 세마리 [백준 2965번] 🔗 [전체 소스 코드] 🔗 [문제 풀러 가기] 문제 해설 문제는 단순 상황 파악만으로 해결할 수 있습니다. 먼저 문제의 조건을 살펴보며 해결방법을 알아보겠습니다. 문제 조건 캥거루 세마리는 일직선 상에 서로 다른 좌표위에 있다. 한 번 움직일 때 바깥쪽에 있는 두 캥거루 중 한마리가 다른 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 캥거루가 두 마리 이상일 수는 없다. 위의 조건을 살펴보면 바깥쪽 두 캥거루 중 한마리가 다른 캥거루 사이의 정수 좌표로 점프한다고 하였습니다. 여기서 정수 좌표는 중앙이라고 표시되어 있지 않기 때문에 어떤 좌표로든지 이동할 수 있습니다. 이 점을 힌트로 삼으면 매번 바깥쪽 캥거루 중 이동시킬 한 마리를 정하지 않아도 됩니다. 이유..