자연수 N이 입력되면 1부터 N까지의 자연수를 종이에 적을 때 각 숫자 중 3의 개수가 몇 개 있는지 구하려고 합니다. 예를 들어 1부터 15까지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5으로 3의 개수는 2개입니다. 첫 줄에 자연수의 개수 N(3 03000~ 03999 else { ans = ans + (left *k); } k = k * 10; } printf("%d", ans); } 1부터 N까지 for문을 돌려서 3이 몇개 들어가는지 카운팅하는 방법도 있지만, N이 커지면 for문 횟수가 기하급수적으로 커진다. 시간 초과를 피하기 위해서 아래와 같은 규칙을 적용했다. 일의 자리, 십의 자리, 백의 자리... 나눠서 개수를 구해야..
자연수 N이 입력되면 N! 값에서 일의 자리부터 연속적으로 ‘0’이 몇 개 있는지 구하는 프로그램을 작성하세요. #include #include int main() { int n, i, j, cnt1 = 0, cnt2 = 0, temp; scanf("%d", &n); for (i = 2; i cnt2 ? cnt2 : cnt1)); return 0; } 중간에 생기기는 0의 값은 계산에서의 올림이나 내림 등 여러가지 이유가 있지만 일의 자리에서 0이 생기는 이유는 10이 곱해져서이다. 10은 5와 2가 곱해지는 것이므로 주어진 값을 소인수 분해하여 5와 2 의 개수 중 더 작은 값을 갖는 값을 출력한다.
임의의 N에 대하여 N!은 소수들의 곱으로 표현하는 방법이 있다. 예를 들면 825는 (0 1 2 0 1)로 표현이 가능한데, 이는 2는 없고 3은 1번, 5는 2번, 7은 없고, 11은 1번의 곱이라는 의미이다. 101보다 작은 임의의 N에 대하여 N 팩토리얼을 이와 같은 표기법으로 변환하는 프로그램을 작성해보자. #include #include int main() { int n, i, j, temp; scanf("%d", &n); std::vector check(n + 1); // 소인수분해 사용 // 굳이 팩토리얼을 다 계산한 이후에 소인수분해 하지말고 for문 돌려서 소인수분해 for (i = 2; i
▣ 입력설명 : 첫째 줄에는 선수의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음줄에는 N개의 정수가 주어진다. 이 값들은 각 선수들의 평소 실력을 앞에서 달리고 있는 선수부터 제시한 것이다. 각 정수는 1 이상 100,000 이하이다. 참가한 선수의 평소실력은 같을 수 있습니다. 그리고 실력이 같다면 앞에 달리는 선수를 앞지를 수 없습니다. ▣ 출력설명 : 각 선수의 최선의 등수를 나타내는 정수 N개를 입력에 주어진 선수 순서와 동일한 순서로 한줄에 출력한다. 모든 정수들 사이에는 하나의 공백을 둔다. #include #include int main() { int n, i, j, rank = 0; scanf("%d", &n); std::vector player(n); f..
N명의 학생의 수학점수가 입력되면 각 학생의 석차를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 석차로 동일 처리한다. #include #include int main() { int n, i, j; scanf("%d", &n); std::vector score(n); std::vector rank(n); for (i = 0; i < n; i++) { scanf("%d", &score[i]); rank[i] = 1; } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (score[i] < score[j]) { rank[i]++; } } } for (i = 0; i < n; i++) { printf("%d ", rank[i]..
N개의 정수로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 N-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼(jolly jumper)라고 부른다. #include #include #include int main() { int n, i, value, ans = 0; scanf("%d", &n); std::vector checkArr(n); int pre, now, temp; scanf("%d", &pre); for (i = 1; i 0 && temp < n && checkArr[temp] == 0) { checkArr[temp] ..
N개의 숫자가 나열된 수열이 주어집니다. 이 수열 중 연속적으로 증가하는 부분 수열을 최대길이를 구하여 출력하는 프로그램을 작성하세요. #include int main() { int n, i, cnt = 1, max = 1, pre, now; scanf("%d", &n); // 맨 처음 값은 먼저 입력받고 그 다음 입력이 들어올 때마다 이전의 값과 비교. scanf("%d", &pre); for (i = 1; i < n; i++) { scanf("%d", &now); if (pre
- Total
- Today
- Yesterday
- pythonanywhere배포방법
- CellForRowAt Not Called
- python 웹 배포
- Django
- django tag
- 테이블출력안됨
- django 개발일지
- pythonanywhere배포
- UITableViewController Not Working
- django clean
- ModelForm Form 차이
- CellForRowAt 호출안됨
- 장고 게시판
- 장고 태그달기
- 웹 배포
- Firebase 데이터베이스 추천
- 알파벳 카운팅
- django 로그인접근
- 까만 화면
- iOS 검은 화면
- iOS 화면 안나옴
- iOS UITableView 출력안됨
- iOS 데이터베이스
- Realtime Database
- 데이터베이스 추천
- django 태그
- django 게시판
- 실시간 데이터베이스
- django pythoneverywhere
- cleaned_data
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |