Java/Daily-Java

[Array] 배열을 응용한 " * " 출력 예제

모모토 2021. 4. 13. 13:47
반응형

●  배열을 응용한 " * " 출력 예제

 

int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 };

 

Q : 주어진 배열에 중복하는 숫자의 개수만큼 각각 * 를 출력하는 코드를 작성하라

 

 

Result ↓

 

3***

2**

2**

4****

 


1) 배열을 선언하자

 

int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 };

 

그리고 * 를 찍어줄 "횟수"를 담아줄 배열을 만든다.

 

int[] Arr2 = new int[4]; // 4개의 숫자의 중복횟수를 넣을꺼니 인덱스는4개

 

2) 무엇을 구해야 하는가 이것을 어떻게 프로그래밍으로 구현할것인가

 

우선 우리는 Arr에서의 중복되는 숫자의 횟수를 구해야한다. 그리고 그값을 Arr2에 넣을것이다. 

 

Arr2[0] = 중복횟수 (+1+1+1)

Arr2[1] = 중복횟수 (+1+1)

Arr2[2] = 중복횟수 (+1+1)

Arr2[3] = 중복횟수 (+1+1+1+1)

 

위의길고 이쁘지않은 코드를 for문을 이용하여 바꿔보자면 다음과 같다

 

더보기

for(int i=0; i<Arr.length; i++) //Arr2배열에 값을 넣어주는 for문

Arr2[Arr[ i ]-1] ++;

 

---

 

' Arr[ i ] -1 ' 로 인덱스를 표현하여 코드를 깔끔하게 구현하였다.

 

3) Arr2[] 배열에 넣어준 값을 어떻게 이용하여 우리의 목표인 ' * ' 를 출력할것인가?

 

우리가 구한것은 반복횟수이다. 따라서 Arr2[i]반복횟수로 for문의 조건식에 사용하자 무엇이 어떻게 반복되어야 하는지 변수를 잘 생각해서 for문은 몇개 필요한지 잘 생각해 보아야 한다.

 

더보기

출력코드

for(int i=0; i<Arr2.length; i++)

System.out.print(Arr2[i]);

 for(int j=0; j<Arr2[i]; j++)

   System.out.print(" * ");

System.out.println();

 

---

 

1,2,3,4 각각의 중복횟수를 찍어야 하므로 총 실행횟수는 4번이다. 총실행횟수 변수: i < Arr2.length

각 i 의 실행에서 " * " 를 중복횟수 만큼 찍어야하므로 j < Arr2[i] (위 코드에서 구해서 저장한 반복횟수값)

 


Answer

 

 

public class ArrayPractice {
	public static void main(String[] args) {
		int[] answer = { 1, 4, 4, 3, 1, 4, 4, 2, 1, 3, 2 };
		int[] counter = new int[4];
		for (int i = 0; i < answer.length; i++) {
			
			counter[answer[i]-1]++;
		}
		for (int i = 0; i < counter.length; i++) {
			System.out.print(counter[i]);
			for(int j=0;j<counter[i];j++)
			System.out.print("*");
			System.out.println();
		}
	} // end of main
} // end of class

'Java > Daily-Java' 카테고리의 다른 글

[Array] 2차원 배열의 90도 회전  (0) 2021.04.20
[Array] 동전 거슬러주기 _ Part 2 (응용)  (0) 2021.04.15
[Array] 동전 거슬러주기 _ Part 1  (0) 2021.04.15
[Array] 2차원 배열 응용  (0) 2021.04.13
[Array] 행렬의 곱셈  (0) 2021.04.11