Algorithm/Python, C++80 백준 4673_셀프 넘버[C++] 문제 풀이 위의 문제에서 생성자를 구하는 방법은 다음과 같습니다. 만약 두 자리 수인 23이 있다면 계산식은 (현재 수+ 10의자리수+1의자리수)가 됩니다. 따라서 23으로 계산을 진행하면 23+2+3=28이 됩니다. 따라서 23은 28의 생성자가 됩니다. 여기서 이 공식으로 계산하였을 때 결과로 나오지 않는, 즉 생성자가 없는 수를 셀프넘버라고 합니다. 이 문제에서 주어진 조건은 10000아래의 수 중에서 셀프넘버인 숫자를 구하는 것이므로 크기가 10000인 배열을 생성해주고, 위의 공식대로 풀이를 진행하여 결과로 나오는 값에 해당하는 배열의 값을 1로 바꿔줍니다(위 과정을 통해 생성자가 있는 수라는 것을 나타냅니다). 이 과정을 10000보다 작을 때 까지 반복해주고, 값이 0인 배열을 출력해주면 됩.. 2022. 1. 20. 백준 1065_한수[C++] 문제 풀이 위의 문제를 보면 각 자리의 수가 등차수열을 이루는 수가 한수라고 설명이 되어있습니다. 예를 들어 1이면 비교 대상이 하나 뿐이므로 한수가 됩니다. 59이면 비교대상이 둘 뿐이라 한수가 됩니다. 따라서 99까지는 모든 수가 한수입니다. 그러나 100이상의 수의 경우 비교대상이 세가지 입니다. 따라서 이를 비교하여 등차수열을 이루는지를 알아보면 됩니다. 예를 들어 111의 경우 그대로 1이 3번 나오므로 등차수열을 이루고 있고 한수입니다. 123의 경우 100의 자리부터 1씩 커지기 때문에 한수입니다. 258의 경우 각 자리의 수가 3씩 커지기 때문에 등차수열을 이루고 있고 한수 입니다. 이 점을 이용하여 (100의 자리수 - 10의 자리수) == (10의 자리수 - 1의 자리수) 라는 것을 알.. 2022. 1. 19. 백준 10818_최소, 최대[C++] 문제 풀이 n개의 수를 입력받으면 입력받은 값을 비교하여 최소값과 최대값을 찾는 문제입니다. 이 문제는 입력받을 수의 개수를 먼저 입력받고, 그 수만큼 숫자를 입력받은 후 반복문과 조건문을 이용하여 배열의 n번째 수가 최대값 또는 최소값인지를 비교 후 조건이 성립하면 최대 또는 최소값을 변경해주면 되는 비교적 간단한 문제입니다. 소스코드 #include using namespace std; int main() { int n, max=-1000000, min=1000000; cin >> n; int array[n]; for ( int i = 0; i > array[i]; if(maxarray[i]) min=array[i]; } cout 2022. 1. 19. 백준 8958_OX퀴즈[C++] 문제 풀이 이 문제의 경우 80보다 작은 문자열을 입력받고 그 중에서 연속된 O의 점수만큼 채점을 하여 점수가 몇 점인지 출력하는 문제입니다. 여기서 연속된 O의 점수라는 것은 연속된 개수에 따라 점수가 늘어나는 것을 의미합니다. 예를들어 O 이면 1점, OO이면 1+2가되어 3점, OOO면 1+2+3=6점이 되는 것입니다. 예를 들어 OOXOXXOOO라는 문자열이 있을 경우 이 문자열에 대한 채점을 진행하면 (1+2) + 1 + (1+2+3) 이기 때문에 점수는 10점이 됩니다. 이 점을 생각하여 문제 해결 순서를 정리하면 다음과 같습니다. 1. 80이하의 문자열을 입력받습니다. 2. 반복문을 이용하여 문자열의 길이만큼 탐색해줍니다. 3. 탐색 과정에서 O를 만날 경우 O에 대한 점수를 1점 올려주고,.. 2022. 1. 18. 백준 4344_평균은 넘겠지[C++] 문제 풀이 이 문제를 정리하면 다음과 같습니다. 1. 테스트 케이스의 수를 받습니다. 2. 테스트 케이스 별 학생의 수와 각 학생들의 점수를 입력 받습니다. 3. 입력받은 점수의 평균을 구합니다. 4. 입력받은 학생들의 점수와 평균 값을 비교한 후 평균을 넘는 학생이 몇명인지를 구합니다. 5. 입력받은 학생의 수 대비 평균을 넘는 학생의 수가 몇 퍼센트인지를 출력합니다. 6. 테스트 케이스의 수만큼 반복해 줍니다. 이 과정을 수행하기 위해 먼저 케이스 수를 입력받고, 입력받은 케이스의 수에서 학생의 수를 입력받고 그 수만큼 점수를 넣을 수 있는 배열을 생성해줍니다. 그 다음 점수를 입력 받으면서 더해주어 총점을 구해줍니다. 구해놓은 총점을 이용하여 평균값을 도출하고, 아까 점수를 입력받은 배열의 값과 평.. 2022. 1. 17. 백준 3052_나머지[C++] 문제 풀이 입력값을 42로 나누고, 나눈 숫자 중 다른 숫자가 몇개 있는지를 출력하는 문제입니다. 42로 나눈 후의 나머지 값을 저장하기위한 크기가 10인 배열을 이용하여 문제를 해결해주면 됩니다. 이중 for문을 이용하여 각 입력값을 비교한 후 중복 되는 수가 있으면 10개의 수에서 1씩 감소 시키면 for문이 모두 동작한 후에 다른 수가 몇개인지가 남게 되고, 그 값을 출력하는 방식으로 문제 풀이를 진행해주면 됩니다. 소스코드 #include using namespace std; int main() { int array[10], value=10; for (int i = 0; i > array[i]; array[i]= array[i]%42; } for (int i = 0.. 2022. 1. 17. 백준 2577_숫자의 개수[C++] 문제 풀이 입력받은 세 수를 곱하고, 곱한 숫자 중 0~9까지 숫자가 각각 몇개씩 있는지를 출력하는 문제입니다. 0~9까지 숫자가 몇번 나왔는지 카운트하기 위해 크기가 10인 배열을 생성해주고 배열의 0번째는 0의 개수, 1번째는 1의 개수... 이런식으로 카운트를 해주면 됩니다. 또 각 자리가 어떤 수인지를 알기위해 %(Modulo) 연산자를 사용하여 풀이를 진행하였습니다. 소스코드 #include using namespace std; int main() { int array[10]={0,}; int a,b,c,value,num; cin >>a>>b>>c; value=a*b*c; while(1){ num = value%10; array[num]++; value= value/10; if(value==0).. 2022. 1. 17. 백준 2562_최댓값[C++] 문제 풀이 입력받은 값 중에서 최댓값이 어떤 값이고, 그 최댓값이 입력받은 값 중 몇번째 인지를 출력하면 되는 문제입니다. 최댓값이 몇번째 입력값인지를 출력하지 않는다면 sort를 이용하여 오름차순으로 정렬한 후 마지막 값을 출력하면 되지만, 이 문제에서는 순서도 출력하여야 하므로 입력받은 값을 하나하나 비교하는 방식으로 풀이를 진행하였습니다. 소스코드 #include using namespace std; int main() { int array[9],order=0,max=0; for ( int i = 0; i > array[i]; if(max 2022. 1. 17. 백준 1546_평균[C++] 문제 풀이 문제에서 일반적인 평균을 구하는 방법이 아니라 (획득한점수/최고점수*100) 를 점수로 계산하고, 이 점수를 이용해서 새로운 평균을 구하는 문제입니다. 따라서 입력받은 값 중 최대값을 나타내는 변수를 이용하여 점수를 계산해주고 그 총점으로 평균을 구하는 코드를 작성해 주시면 됩니다. 소스코드 #include using namespace std; int main() { int n; cin >> n; double array[n],total=0, max=0; for (int i = 0; i > array[i]; if(max 2022. 1. 16. 이전 1 ··· 3 4 5 6 7 8 9 다음