C 55

[C++] 백준 11399 : ATM

백준 11399 : ATM 문제 링크: www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 내용: 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어졌을 때, 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하시오. Idea: 최소 대기시간..

백준 Baekjoon 2020.12.14

[C++] 백준 5568 : 카드 놓기

백준 5568 : 카드 놓기 문제 링크: www.acmicpc.net/problem/5568 5568번: 카드 놓기 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 문제 내용: 상근이는 카드 n(4 ≤ n ≤ 10)장을 바닥에 나란히 놓고 놀고있다. 각 카드에는 1이상 99이하의 정수가 적혀져 있다. 상근이는 이 카드 중에서 k(2 ≤ k ≤ 4)장을 선택하고, 가로로 나란히 정수를 만들기로 했다. 상근이가 만들 수 있는 정수는 모두 몇 가지일까? 예를 들어, 카드가 5장 있고, 카드에 쓰여 있는 수가 1, 2, 3, 13, 21라고 하자. 여기서 3장을 선택해서 정수를 만들려고 한다. 2, 1, 13을 순서대로 나열하면 정수 2113을 만들..

백준 Baekjoon 2020.12.07

[C++] 백준 1931 : 회의실배정

백준 1931 : 회의실 배정 문제 링크: www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 내용: 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. Idea: 이 문제..

백준 Baekjoon 2020.12.03

[C언어] 백준 2839 : 설탕 배달

백준 2839 : 설탕 배달 문제 링크 www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 내용 (요약) 설탕 봉지 3kg과 5kg이 있다. 설탕을 배달하기 위해 가장 적은 봉지로 들고 가려고 한다. 설탕을 정확하게 Nkg을 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. ex) input : 18 output : 4 Idea 최대한 적은 봉지를 가져가야 하므로 먼저 N이 5의 배수임을 확인한다. 5의 배수라면 몫을 cnt에 더..

백준 Baekjoon 2020.11.25

[C언어] 백준 9095 : 1, 2, 3 더하기

백준 9095 : 1, 2, 3 더하기 문제 링크 www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 내용 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 단, 0 < n < 11 인 정수 Idea 정수 4를 1, 2, 3의 합으로 나타낼 때 마지막 수를 기준으로 정렬해본다. 1+1+1+1 1+2+1 2+1+1 3+1 1+1+2 2+2 1+3 이런 식으로 정렬했을 때, 마지막으로 1을 더하는 경우는 마지막 1을 제외하고 3을 만드는 경우의 수와 같고, 마지막으로 2를 더하는 경우는 마지막 2를 제외..

백준 Baekjoon 2020.11.14

[C언어] 배열, 구조체의 원소 개수 구하기 / sizeof 사용법

배열, 구조체의 원소 개수 구하기 / sizeof 사용법 sizeof 란? 메모리의 크기를 바이트(Byte) 단위로 계산한 것. 정수형으로 반환된다. 예제 코드) 1 2 3 4 5 6 7 8 #include int main() { printf("char : %d byte\n", sizeof(char)); printf("int : %d byte\n", sizeof(int)); printf("double : %d byte\n", sizeof(double)); return 0; } Colored by Color Scripter cs 1차원 배열의 원소 개수 구하기 그럼 이러한 sizeof의 특징을 이용하여 배열이 있을 때, 원소의 개수를 구해보도록 하자. 예를 들어, arr[10]이라는 배열이 있다. 1 in..

[C++] 백준 14501 : 퇴사

백준 14501 : 퇴사 문제 링크: www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 내용: 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 ..

백준 Baekjoon 2020.11.05

[C언어] 백준 14881 : 물통 문제

백준 14881 : 물통 문제 문제 링크 www.acmicpc.net/problem/14881 14881번: 물통 문제 용량이 a, b 리터인 두 물통이 있다. 이때, 물을 적절히 부어서 정확하게 c리터를 만들 수 있는지 아닌지 구하는 프로그램을 작성하시오. 물은 무한히 많다. www.acmicpc.net 문제 내용 용량이 a, b 리터인 두 물통이 있다. 이때, 물을 적절히 부어서 정확하게 c리터를 만들 수 있는지 아닌지 구하는 프로그램을 작성하시오. 물은 무한히 많다. Idea 수많은 시행착오 끝에... 물통 문제에는 크게 두 가지 규칙이 있다. (사실 저 1번에서 많이 틀려먹었다... 문제 좀 제대로 읽지...) 물통은 a와 b만 있다. 즉, a나 b에 물을 채워 c를 만드는 것이 문제이다.(=a와..

백준 Baekjoon 2020.11.04

[C언어] 백준 2447 : 별 찍기 - 10

백준 2447 : 별 찍기 - 10 문제 링크 www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 내용 재귀적인 패턴으로 별을 찍어보자. N이 3의 거듭제곱이라고 할 때, 크기 N의 패턴은 NxN 정사각형 모양이다. 크기 3의 패턴은 가운데 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)x(N/3) 정사각형을 크..

백준 Baekjoon 2020.11.02

[C/C++] 최대공약수 구하기

최대공약수 구하기 Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include int main() { int x, y, tmp; printf("Enter the number(x, y) : "); scanf("%d %d", &x, &y); //최대공약수 구하기 //단, x가 y보다 커야함 while (y != 0) { tmp = x % y; x = y; y = tmp; } printf("\n최대공약수 : %d\n", x); return 0; } Colored by Color Scripter cs [출력 결과] *입력 시 x가 y보다 커야 한다. *둘 사이에 최대공약수가 없는 경우 1로 출력된다.