본문 바로가기

7장 기타49

[백준/BOJ] 3052번 나머지 (C++) 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제의 소재 수를 10개 입력받아 이를 42로 나눈 후 서로 다른 수의 개수를 세는 문제이다. 해답 bool형 배열 num[42]를 false로 초기화 하였다. 그리고 10개의 수를 입력받으면서 입력받은 수 a를 42로 나눈 나머지에 대하여 num[a%42]= true;로 숫자의 유무를 체크하였다. 이후에 각각의 num항에 대해 true의 개수를 측정하여 출력하였다. // BOJ_3052.cpp #include using namespace std; int main() { int a, answer; bool num[42] = {0};.. 2021. 5. 10.
[백준/BOJ] 2577번 숫자의 개수 (C++) 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제의 소재 3자리수 숫자 A, B, C가 입력되면 A×B×C의 값에 0~9까지의 숫자가 몇 개 사용됐는지 개수를 세는 문제이다. 해답 각 숫자가 사용된 횟수를 저장할 배열 num[10]을 int num[10] = {0};으로 초기화해주었다. for문을 이용해 N에 A×B×C를 저장하고, 1의 자리수부터 차례대로 num[N%10], N /= 10을 이용해서 개수를 셌다. A, B, C는 1000미만의 세자리 정수이므로 A×B×C는 10003=109보다 작다. 따라서 A×B×C를 int형에 저장하여도 범위를 초과하지 .. 2021. 5. 10.
[백준/BOJ] 2562번 최댓값 (C++) // BOJ_2562.cpp #include using namespace std; const int N = 9; int main() { int max, position, a; max = 0; for (int i=0;i>a; if (a>max) { max = a; position = i+1; } } cout 2021. 5. 10.
[백준/BOJ] 10818번 최소, 최대 (C++) 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제의 소재 N개의 정수가 주어졌을 때, 최솟값과 최댓값을 출력하는 문제이다. 해답 전처리기 #define을 활용하였다. MAX(A,B), MIN(A,B)를 정의하여 두 수를 손쉽게 비교할 수 있었다. 처음 입력되는 수를 최댓값 max와 최솟값 min에 대입하고 수가 입력될 때 마다. 크기 판단을 하여 min, max를 구할 수 있었다. #define MAX(A,B) (A>B ? A:B)는 전처리기로 컴파일러가 컴파일시 MAX(.. 2021. 5. 4.
[백준/BOJ] 1110번 더하기 사이클 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제의 소재 0보다 크거나 같고, 100보다 작은 정수 N이 입력되면, N의 일의 자리수와 N의 각 자리수의 합의 일의 자리수를 붙여 새로운 수를 만들 수 있다. 이러한 과정을 반복했을 때, 다시 N이 되는 데 걸리는 횟수를 출력하는 문제이다. 해답 정수 N을 변환한 수는 N%10*10+(N/10+N%10)%10으로 나타낼 수 있다. 최초 1회의 실행이 필요하기 때문에 do-while문을 이용하여 두 수가 다른동안 변환을 하고 횟수를 측정하였다. .. 2021. 5. 4.
반응형