전체 글 204

[백준 #10974] 모든 순열 (C++)

https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 숫자를 n을 입력받고 1부터 n까지 벡터에 넣어준 뒤, algorithm 헤더 파일에 정의된 next_permutation을 사용하여 문제를 풀었다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; vector v; cin >> n; for (int i = 1; i

[백준 #2851] 슈퍼 마리오 (C++)

https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 배열에 버섯의 점수를 입력하고 그 점수를 더해가면서 합이 100 이상일 경우, 그 이전 합과 비교한다. 이전 합과 현재 합 중에 100에 가까운 것을 출력하고, 만약 100과의 차이가 같다면 더 큰 수(현재 합)를 출력한다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int arr[10]; int sum = 0; int tmp, r..

[백준 #1476] 날짜 계산 (C++)

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 무한루프를 돌려 year - e가 15의 배수, year - s가 28의 배수, year - m이 19의 배수이면 해당 연도를 출력하고 끝내고, 아니라면 year를 하나씩 늘려가며 검사하도록 했다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int e, s, m, year = 1; cin >..

[백준 #2309] 일곱 난쟁이 (C++)

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 배열 값을 입력하며 sum에 더해주어 배열 값들의 총합을 구했다. 그리고 결과를 오름차순으로 출력해야 하므로 배열을 입력받은 후 sort를 사용해 정렬해주었다. 그다음 배열의 전체 합 - 배열 중 2개의 요소 = 100이면 그 요소를 제외하고 출력해주었다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin..

[백준 #2231] 분해합 (C++)

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net num이 0이 아닐 때까지 10으로 나눈 나머지 값을 sum에 더하고, 10으로 나눈 몫을 num에 다시 넣어주는 것을 반복한다. 즉, num의 각 자릿수를 더하는 것이다. 그다음 각 자릿수를 더한 값과 i 값이 입력받은 n이라면 생성자를 구한 것이기 때문에 result에 i의 값을 넣어준다. 이 과정을 0부터 입력받은 숫자까지 차례대로 하다가 생성자가 발견되면 이를 ..

[백준 #2164] 카드2 (C++)

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 제일 위에 있는 카드를 바닥에 버릴 것이기 때문에 queue를 사용했다. (First In First Out) 맨 처음 n을 입력받고 for 문을 사용해 1부터 n까지 queue에 넣어준다. 그다음 pop()을 사용해 가장 먼저 입력한 숫자를 삭제하고, 그다음 제일 위에 있는 숫자를 front()로 반환하여 tmp에 넣어준 뒤 pop()을 통해 해당 숫자를 삭제하고 push(tmp)를 이용해 tm..

[백준 #5565] 영수증 (C++)

https://www.acmicpc.net/problem/5565 5565번: 영수증 첫째 줄에 10권의 총 가격이 주어진다. 둘째 줄부터 9개 줄에는 가격을 읽을 수 있는 책 9권의 가격이 주어진다. 책의 가격은 10,000이하인 양의 정수이다. www.acmicpc.net 처음에 10권의 총 가격을 입력하고, 다음으로 입력하는 책 가격들을 순차적으로 빼주면 가격을 읽을 수 없는 책의 가격을 알 수 있다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int sum, price; cin >> sum; for (int i = 0; i > price; sum -= pr..

[백준 #6603] 로또 (C++)

https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net k개의 수만큼 수를 입력하여 벡터 v에 넣어주었다. 그다음 k개 중 6개를 출력하기 위해 벡터 tmp에 k개의 수 중 6개에 1을, 나머지 (k-6) 는 0을 넣어주었다. (만약 k가 7이라면 tmp는 {1, 1, 1, 1, 1, 1, 0}이 되는 것이다) 그다음 do-while 문을 이용해 tmp 현재에 이전 순열이 있으면 for 문을 실행하여 tmp의 i번째 요소가 1일 경우, 벡터..

[백준 #10972] 다음 순열 (C++)

https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net algorithm 헤더 파일에 정의된 next_permutation()을 사용하여 문제를 풀었다. next_permutation()은 다음 순열이 없다면 false를 반환하고 현재 순열의 다음 순열이 있다면 이를 구하고 true를 반환한다. 따라서 if 문을 사용해 다음 순열이 있으면 그것을 출력하고, 입력한 순열이 사전 순으로 마지막에 오는 순열이면 -1을 출력했다. #include #include #include using namespace std; i..

[백준 #10973] 이전 순열 (C++)

https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net algorithm 헤더 파일에 정의된 prev_permutation()을 사용하여 문제를 풀었다. prev_permutation()은 이전 순열이 없다면 false를 반환하고 현재 순열의 이전 순열이 있다면 이를 구하고 true를 반환한다. 따라서 if 문을 사용해 이전 순열이 있으면 그것을 출력하고, 입력한 순열이 사전 순으로 가장 처음에 오는 순열이면 -1을 출력했다. #include #include #include using namespace st..