Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Exception
- springdatajpa
- AOP
- JDBC
- Android
- java
- Greedy
- 인프런
- Proxy
- 그리디
- 스프링 핵심 원리
- JPQL
- pointcut
- 자바
- db
- 알고리즘
- 스프링 핵심 기능
- kotlin
- Spring Boot
- jpa
- 스프링
- 백준
- http
- transaction
- SpringBoot
- Servlet
- spring
- Thymeleaf
- 김영한
- QueryDSL
Archives
- Today
- Total
개발자되기 프로젝트
특정 범위의 숫자가 나열돼 있을 때 각 숫자의 개수 본문
1. 문제
M이상 N이하의 수가 나열되어 순서에 상관없이 나열되어 있다고 할 때, 각 수가 몇 개인지 세어보자.
예를들어 20세 이상 100세 이하의 사람들이 한 장소에 머물러 있다.
연령에 따라 혹은 각 나이에 따른 인원을 체크하자.
2. 배열을 쭉 돌면서 ages배열에 나이 대 별로 counting을 추가한다.
데이터의 수에 computation time이 비례한다. 즉 O(n)이다.
3. 핵심은 찾고자 하는 값에 대한 배열을 만들고 그 배열에 바로바로 입력하는 것.
4. 코드
package Counting;
import java.util.Arrays;
public class counting {
public static void main(String[] args) {
int[] people = {55, 40, 22, 99, 76, 81, 29, 31, 33, 65};
int[] ages = new int[11]; //연령에 따라
for(int i = 0; i< people.length; i++){
int age = people[i];
if(age < 30) ages[2]++;
else if(age < 40) ages[3]++;
else if(age < 50) ages[4]++;
else if(age < 60) ages[5]++;
else if(age < 70) ages[6]++;
else if(age < 80) ages[7]++;
else if(age < 90) ages[8]++;
else ages[9]++;
}
int temp = 20;
int number = people.length;
for(int i=2; i < ages.length-1; i++){
System.out.println(number + "명 중 " + temp + " 대는 : " + ages[i] + "명");
temp +=10;
}
}
}
* git : https://github.com/bsh6463/Algorithm/tree/main/Counting
5. 결과
10명 중 20 대는 : 2명
10명 중 30 대는 : 2명
10명 중 40 대는 : 1명
10명 중 50 대는 : 1명
10명 중 60 대는 : 1명
10명 중 70 대는 : 1명
10명 중 80 대는 : 1명
10명 중 90 대는 : 1명
'Java > 알고리즘' 카테고리의 다른 글
그리디(Greedy) 알고리즘 (0) | 2022.05.15 |
---|---|
경우의 수 문제(Brute-Force Search) (0) | 2021.06.26 |
그리디(Greedy) 알고리즘 (0) | 2021.06.26 |
피보나치 수열(Fibonacci Sequence) (0) | 2021.06.13 |
미로 찾기! (0) | 2021.06.10 |
Comments