알고리즘 109

2437번: 저울

2022.01.23 문제 출처: https://www.acmicpc.net/problem/2437 문제 분석: 입력받은 무게의 추들로 만들 수 없는 최소 양의정수 구하기 문제 해결: "N의 무게를 만들 수 있을때 N + arr[i] 이하는 모두 만들 수 있다." N의 무게를 만들 수 있다 : 0~N까지 추로 만들 수 있다. arr[i] ~ arr[i] + N 이 가능하다 이기때문에 위의 식이 성립한다. 즉, N >= a[i] 일때 N + arr[i] 까지 모두 만들 수 있다. 내 소스코드: using namespace std; const int INF = 987654321; int main() { int N; int arr[1002]; scanf("%d", &N); for (int i = 0; i < N..

8958번: 0X퀴즈

2018.12.31. 문제 출처:https://www.acmicpc.net/problem/8958 문제 분석:처음에 입력받을 수를 정하고 0X결과를 받아와서 연속되는 0개수 만큼 점수가 된다ex) 000 => 1+2+3 = 6 문제 해결:num을 입력받아 그 만큼 내용을 반복 gets() 함수를 통해 문자열을 배열에 입력받는다.배열을 0으로 초기화하고0이 나오기 전까지 즉 입력받은 0X결과가 끝날때까지 for문을 실행한다. 0일때는 이전 배열이 0인지 X인지 확인하여0이면 연속되는 값을 추가하고 X일때는 1로 초기화한다 X일때는 추가되는 점수를 0으로 초기화한다. 내 소스코드:123456789101112131415161718192021222324252627282930313233343536373839404..

2577번: 숫자의 개수

2018.12.29. 문제 출처:https://www.acmicpc.net/problem/2577 문제 분석:세자리수 정수 3개를 입력받고 다 곱한 값이 0-9까지가 각각 몇번 있는지 출력하라 문제 해결:세자리수 정수의 3개의 곱이 몇자리 수인지 알아보고 그 횟수만큼 for문을 돌려 각 자리를 10씩 나눠줘서 해당하는 배열의 크기를 1씩 늘려준다. 내 소스코드:12345678910111213141516171819202122232425262728293031323334#define _CRT_SECURE_NO_WARNINGS #include int main(){ int A, B, C, Result; int arr[10] = {0,};//0-9까지 몇번 출력됬는지 int ans;//각 자리수를 임시저장 int ..

2444번: 별 찍기 - 7

2018.12.24. 문제 출처:https://www.acmicpc.net/problem/2444 문제 분석:2442번과 2443번을 합친형태 문제 해결:https://b1ackhand.tistory.com/6?category=848677https://b1ackhand.tistory.com/7?category=848677 위 참고 내 소스코드:12345678910111213141516171819202122232425262728293031323334353637383940414243#define _CRT_SECURE_NO_WARNINGS #include int main(){ int num; scanf("%d", &num); for (int i = 0;i 1;j--) { printf(" "); } for (i..

2443번: 별 찍기 - 6

2018.12.24. 문제 출처:https://www.acmicpc.net/problem/2443 문제 분석:2442번 문제 와 비슷하지만 역삼격형 형태로 출력하는것https://b1ackhand.tistory.com/6?category=848677 문제 해결:2442번과 비슷하지만 2442는 작은것부터 큰것으로 가는 for문이라면반대로 2443번은 큰것에서부터 작은것으로 가는 for문사용 내 소스코드:1234567891011121314151617181920212223242526272829#define _CRT_SECURE_NO_WARNINGS #include int main(){ int num; scanf("%d", &num); for (int i = num;i > 0;i--) { for (int j ..

2442번: 별 찍기 - 5

2018.12.24. 문제 출처:https://www.acmicpc.net/problem/2442 문제 분석:첫째줄에는 별1개 두째줄에는 별3개가 중간에서 퍼져나간다.그리고 별이 없는부분은 빈칸이다.n을 입력했을때 n번쨰 줄까지 출력 문제 해결:n번째 줄 까지 실행하기위해 첫번째 for문첫번째 for문 안에 (입력된수 - 현재 줄) 만큼 빈칸생성 후 (2*현재줄 -1) 만큼 별 생성 내 소스코드:1234567891011121314151617181920212223242526272829#define _CRT_SECURE_NO_WARNINGS #include int main(){ int num; scanf("%d", &num); for (int i = 0;i 1;j--) { printf(" "); } for ..

1065번: 한수

2018.12.23. 문제 출처: https://www.acmicpc.net/problem/1065 문제 분석:어떤 정수의 자릿수가 등차수열을 이룰때 이를 한수 라고한다.1000보다 작은 자연수 N이 주어졌을때 N보다 작은 한수의 개수를 출력한다. 문제 해결:답 예시를 봤을때일의자리수인 ex) 1,3,5등은 모두 한수 였고 십의자리수 ex) 11, 22, 35모두 한수로 처리했다 즉, 백의 자리 숫자만 확인해 주면 됬던것이다. 배열 arr 안에 0을 모두 넣어주고한수를 찾는 FindHan()을 만들었다.입력받은 세자리수를 각각 분리하여 numarr안에 넣어주고공차가 일치한지 확인해주고 맞으면 1을 반환한다. arr이 1인 것의 개수를 세준다. 내 소스코드:123456789101112131415161718..

4673번: 셀프넘버

2018.12.23. 문제 출처: https://www.acmicpc.net/problem/4673 문제 분석: 문제를 살펴보면 n과 n의 각 자리수를 더하는 함수가 있다고 했을때 이를 실행해서 값이 나오게하는 것을 생성자라고 한다. ex) 33-> 33+3+3=3933은 39의 생성자 이와 같을때 생성자가 없는 숫자를 셀프넘버라 한다.1~10000까지의 셀프넘버를 출력하라 문제 해결:arr[10000]에 1~10000까지 값을 각각 넣어주고arr[0]=1 arr[1]=2 ..... FindSelf()라는 함수를 실행한다 이 함수는 숫자를 넣었을때 생성자를 되게 하는 값을 만든다ex) FindSelf(33) = 39 그리고 생성자가 있는 배열에는 0을 넣어준다. arr[10000]을 확인해주면 셀프넘버에..