알고리즘 분류: 구현 문제 링크: https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 【 풀이 】 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 가 저장되어 있는 배열(세트)을 이용해 몇 개의 세트로 주어진 방 번호를 만들 수 있는지를 구하는 문제이다. 우선 각 숫자들의 등장 횟수를 세기 위한 배열을 하나 선언한다.그 후 각 숫자들을 문자로 저장, 입력받은 숫자를 반복문을 통해 검사하며 각 숫자의 등장 횟수를 센다.그런 다음 그 배열에서 최댓값을 출력해주면 끝이다. 다만 6과 9는 각 수가 세트에 존재하지 않을 때(이미 썼을 때) 바꿔 쓸 ..
알고리즘 분류: 수학, 구현, 정수론 문제 링크: https://www.acmicpc.net/problem/9506 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net 【 풀이 】 수를 하나 입력받고, 그 수의 약수들의 합이 입력 받은 수와 일치하면 그 합을 출력하는 문제이다. 숫자 n을 입력받고, 1부터 n까지 숫자를 돌려가면서 n과 나누어 떨어지는 수가 있다면 배열에 저장한다. 그 후 배열에 저장된 수의 합을 구하고, n과 같은지 다른지 조건문으로 예제와 같이 출력하면 된다. 【 코드 】 #includ..
알고리즘 분류: 수학, 정수론, 유클리드 호제법 문제 링크: https://www.acmicpc.net/problem/13241 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다 www.acmicpc.net 【 풀이 】 유클리드 호제법을 재귀함수로 구현하여 최대공약수를 구한 다음 최대공약수를 활용하여 최소공배수를 구하면 되는 문제이다. 문제에서 수 형식을 long long int (C/C++) 를 사용하라고 하였으니, 변수든 함수든 모두 long long int로 구..
알고리즘 분류: 구현, 문자열 문제 링크: https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 【 풀이 】 문자열을 입력받고 입력받은 대로 출력하면 되는 문제이다. 개행까지 포함한 문자열을 한 번에 출력해도 되지만 문제에서 그러한 조건은 없으므로 단순하게 한줄씩 입력받고 한 줄씩 출력하면 된다. string 클래스와 getline을 이용하여 공백을 포함하여 입력받고 그대로 출력한 다음 비어있는 문자열을 받게 되면(개행만 하게 되면..
알고리즘 분류: 문자열, 정렬 문제 링크: https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 【 풀이 】 한 수를 입력받고 각 자릿수의 수를 내림차순으로 정렬하여 출력하는 문제이다. 수를 입력받은 다음 10으로 나누어가며 나머지를 벡터에 저장하고 greater() 임시객체를 불러 내림차순으로 정렬하여 순서대로 출력하면 된다. 또한 배열을 정렬하고 반대로 출력하는 것도 방법이 되겠다. 【 코드 】 #include #include #include using namespace std; vectorv; int main(void) { int..
알고리즘 분류: 자료 구조, 스택 문제 링크: https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 【 풀이 】 입력으로 받은 수열을 스택을 활용하여 순서대로 구현할 수 있는지를 물어보는 문제이다. 증가하는 변수 cnt를 선언해 주고, 입력한 숫자 n과 같아질 때까지 증가시키고 스택에 저장. 그 후 '+' 기호를 벡터에 저장한다. 그리고 스택의 맨 나중에 들어온 값과 ..