[배열] 각 숫자의 출현 횟수를 구하고, 새로운 배열에 값을 저장하기

0

알고리즘

목록 보기
5/14
int[] numArr = {1, 5, 3, 2, 1, 5, 2, 7, 8, 3, 5, 6, 10, 5};
int[] cntArr = new int[10]; // 각 숫자의 출현횟수가 누적될 배열. 
// 1의 출현횟수 : 2  / cntArr[0]은 1의 출현횟수가 누적될 곳  
// 2의 출현횟수 : 2  / cntArr[1]은 2의 출현횟수가 누적될 곳 
// 3의 출현횟수 : 2
// 4의 출현횟수 : 0
// 5의 출현횟수 : 4
// 6의 출현횟수 : 1
// 7의 출현횟수 : 1
// 8의 출현횟수 : 1
// 9의 출현횟수 : 0
// 10의 출현횟수 : 1

// 내 풀이방법
for(int i = 0; i <= numArr.length-1; i++) {
	for(int j=0; j<=numArr.length-1; j++) {
		if(i == numArr[j]-1) {
			cntArr[i]++;
		}
	} System.out.println(cntArr[i]);}


// 강사님이 알려주신 방법 
for(int i = 0; i <= numArr.length-1; i++) {
		cntArr[numArr[i]-1] += 1;
	} System.out.println(cntArr[i]);

➡︎ 강사님의 풀이를 보면 이중 for문과 if문을 다 사용하지 않았다.
cntArr[0]은 1의 출현횟수가 누적될 곳이 힌트였다.!!!!
근데 알려주신 방법을 보면 이해는 되는데, 안돌아감...????


추가적으로, 년도에 맞는 띠 구하기

String[] zodiacSign = {"원숭이", "닭", "개", "돼지", "소", "호랑이", "토끼 ", "용 ", "뱀 ", "말 ", "양 "};
int year = 2022;
System.out.println(year + "년도는 " + zodiacSign[year%12]+ "해입니다.");  // 나머지로 간단하게 나타낼 수 있음

➡︎ %나머지를 이용해서 엄청 간단하게 문제를 풀 수 있다..!

profile
백엔드를 공부하고 있습니다.

0개의 댓글