백준 공부/Java

단계별로 풀어보기 - 1차원배열 java

Mary's log 2021. 11. 22. 12:47

* 완벽한 정답은 없다

* 여러 정답 블로그 보면서 다른 사람의 코드도 읽으며 이해하기

 


10818

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int num = scan.nextInt();
		int arr[] = new int[num];

		for (int i = 0; i < num; i++) {
			arr[i] = scan.nextInt();
		}
		Arrays.sort(arr);
		System.out.println(arr[0] + " " + arr[arr.length - 1]);
	}
}

 

 

2562

배열사용X

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int max=0;		// 최댓값
		int count =0; 	// 최댓값의 인덱스
		
		for (int i = 1; i <=9 ; i++) {
			int a = scan.nextInt();
			if(max<a) {
				max=a;
				count=i;
			}
		}
		System.out.println(max);
		System.out.println(count);
		
	}
}

배열 사용

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int max=0;   //최댓값
		int arr[] = new int[9];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = scan.nextInt();
			if (arr[max]<arr[i]) {
				max=i;
			}
		}
		System.out.println(arr[max]);
		System.out.println(max+1);
	}
}

 

 

2577

출력 결과 뜻

3         : arr[0]에 int 0  이  3번 카운트됨
1         : arr[1]에  int 1 이  1번 카운트됨
0         : arr[2]에 int 2  이  0번 카운트됨
2         : arr[3]에 int 3  이  2번 카운트됨
0         : arr[4]에 int 4  이  0번 카운트됨
0         : arr[5]에 int 5  이  0번 카운트됨
0         : arr[6]에 int 6  이  0번 카운트됨
2         : arr[7]에 int 7  이  2번 카운트됨
0         : arr[8]에 int 8  이  0번 카운트됨
0         : arr[9]에 int  9 이  0번 카운트됨

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		int[] arr = new int[10];
		int result = a * b * c;

		while (result > 0) {
			arr[result % 10]++;
			result = result / 10;
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

 

3052

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);

		int arr[] = new int[10];
		boolean bl = false;
		int cnt = 0;

		for (int i = 0; i < arr.length; i++) {
			arr[i] = scan.nextInt() % 42;
		}
		for (int i = 0; i < arr.length; i++) {
			bl = false;
			for (int k = i + 1; k < arr.length; k++) {
				if (arr[i] == arr[k]) {
					bl = true;
					break;
				}
			}
			if (bl == false) {
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}

 

 

1546

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt(); // N:시험 본 과목 수
		double arr[] = new double[N]; // 과목 점수 담을 배열 선언초기화

		for (int i = 0; i < N; i++) {
			arr[i] = sc.nextDouble();
		}
		sc.close();
		double M = arr[0]; // 최댓값 점수 담을 변수M. 일단 arr[0]의로 초기화해주고
		for (int i = 1; i < N; i++) {
			if (arr[1] > M) { // 새로 들어오는 점수마다 기존 arr[0]보다 크면
				M = arr[i]; // 그 값으로 다시 초기화
			}
		}

		double avg = 0;
		for (int i = 0; i < N; i++) {
			if (arr[i] != M) { // 최댓값이 아닌 점수들?
				avg += arr[i] / M * 100;
			} else {
				avg += M; // ???????????여기 왜 100...?
			}
		}
		System.out.println(avg / N);
	}
}

ㄴ 왜 마지막에 else { avg += 100}    100으로 더하죠...?

import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        double arr[] = new double[sc.nextInt()];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextDouble();

        }
        sc.close();

        double sum = 0;
        Arrays.sort(arr);

        for (int i = 0; i < arr.length; i++) {
            sum += ((arr[i] / arr[arr.length-1]) * 100);
        }
        System.out.println(sum / arr.length);
    }
}

ㄴ일단 이거로 했음...

 

 

 

8958

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt();

		String arr[] = new String[A]; //배열 생성

		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.next(); 
            // OOXXOXXOOO
			// OOXXOOXXOO
			// OXOXOXOXOXOXOX
			// OOOOOOOOOO
			// OOOOXOOOOXOOOOX 얘네를 입력
		}
		sc.close();

		for (int i = 0; i < arr.length; i++) {
			int count = 0; // 연속으로 O인 횟수
			int sum = 0; // (연속으로 0인 횟수)의 합계

			for (int j = 0; j < arr[i].length(); j++) {

				if (arr[i].charAt(j) == 'O') {
					count++;
//				arr[0]인 상태에서 j로 한글자씩 OX결과를 돌면서
//				O가 연속이면 후치
				} else {
					count = 0;// O가 아니면 0으로 초기화;
				}

				sum += count;
			}
			System.out.println(sum);
		}

	}
}

 

4344

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int[] arr;
		int testcase = sc.nextInt();

		for (int i = 0; i < testcase; i++) {
			int N = sc.nextInt(); // 총 학생수
			arr = new int[N];

			double sum = 0; // 한 학생의 성적 총합

			for (int j = 0; j < N; j++) {// 학생 반복
				int score = sc.nextInt();// i=1인 학생의 점수 입력..
				arr[j] = score;
				sum += score;
//				arr[i=1][j=1] :50
//				arr[i=1][j=2] :50
//				arr[i=1][j=3] :70

//				arr[i=2][j=1] :100
//				arr[i=2][j=2] :95
//				arr[i=2][j=3] :90	
			}

			double mean = (sum / N);// 반 평균
			double count = 0; // mean을 정말 넘는 학생

			// mean을 넘는 학생
			for (int j = 0; j < N; j++) {// 학생 반복
				if (arr[j] > mean) {
					count++;
				}
			}
			
			System.out.printf("%.3f%%\n",(count/N)*100);
//			printf : 변수에 입력된 값을 정렬해서 출력
//			"%.3%%\n"
//			% : 산술연산. 나눠서 나온 나머지
//			.3:소수점 4번째에서 반올림
//			% : 문자열 %
//			% : 앞의 %가 문자열%임을 알려주는
		}

	}
}