Programming
-
[백준] #1026번 : 보물 (그리디 알고리즘)Programming/백준 (c++) 2022. 3. 15. 19:26
https://www.acmicpc.net/problem/1026 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 ..
-
[백준] #11399번 : ATM (그리디 알고리즘)Programming/백준 (c++) 2022. 3. 15. 19:05
문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다..
-
[백준] #2839번 - 설탕 배달 (그리디 알고리즘)Programming/백준 (c++) 2022. 3. 15. 17:39
문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정..
-
[C언어] 백준 #1110번 - while 더하기 사이클Programming/C 2021. 7. 15. 17:45
문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..
-
[C언어] 오른쪽 정렬으로 출력하기 (공백 이용)Programming/C 2021. 7. 8. 23:59
#백준 단계별 문제 2439번 문자를 오른쪽 정렬으로 출력하는 방법 1. 문자 앞에 공백 추가하기 [ex] 숫자 n을 입력받고 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, n번째 줄에는 별 n개를 출력한다면? (오른쪽 정렬으로) for (int m =n-1 ; m>=1 ; m--) printf(" "); 위 for문을 통해서 문자 앞에 ( 전체 문자 개수 - 출력하는 문자 개수) 만큼 공백을 넣어주는 것! 예를 들어 5를 입력받았다면, 첫번째 줄에는 '공백 4칸 + 문자 1개' 로 출력이 되어야한다. ( _ _ _ _ * ) 두번째 줄은 '공백 3칸 + 문자 2개' ( _ _ _ * * ) 그럼 이런 출력값을 얻을 수 있다
-
[C언어] 난수 생성하기 (rand 함수)Programming/C 2021. 7. 8. 23:19
숫자를 랜덤으로 생성하는 방법 // rand() 함수 쓰기 rand 함수를 쓰기 위해서는 헤더파일을 사용해야한다. → #include 0 ~ 100 범위에서 숫자를 랜덤으로 생성한다고 하면 rand()%101 을 사용하면 된다. ** rand()%101 : 무작위의 숫자를 101로 나눈 나머지 ** % → 나머지를 구할 때 사용 rand()%a → 0부터 (a-1)까지 숫자 중 랜덤 선택 rand()%a + 5 → 5부터 (a+4)까지 숫자 중 랜덤 선택 . . 정리하자면 N, T 까지의 범위의 난수를 생성하고싶다면 → rand() % (T-N+1) + N [ex] 1부터 100까지 숫자 중 n개를 랜덤으로 출력 (n개는 입력받기) → 단점 랜덤으로 숫자가 생성되지만, 실행할 때마다 수가 달라지지 않는다..