drexqq

[Java, 자바] 백준알고리즘 단계별로 풀기 - 6단계 본문

공부노트/백준알고리즘

[Java, 자바] 백준알고리즘 단계별로 풀기 - 6단계

drexqq 2020. 6. 5. 20:46
728x90
반응형

10818번

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

 

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int arr[] = new int[n];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.nextInt();
		}
		Arrays.sort(arr);
		System.out.println(arr[0]);
		System.out.println(arr[arr.length-1]);
	}
}

 

2562번

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
		 	
			예를 들어, 서로 다른 9개의 자연수
			3, 29, 38, 12, 57, 74, 40, 85, 61
			이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
			
		 */
		Scanner sc = new Scanner(System.in);
		int n[] = new int[9];
		for (int i = 0; i < n.length; i++) {
			n[i] = sc.nextInt();
		}
		int max = 0;
		int index = 0;
		for (int i = 0; i < n.length; i++) {
			if (max < n[i]) {
				max = n[i];
			}
		}
		for (int i = 0; i < n.length; i++) {
			if (n[i] == max) {
				index = i+1;
			}
		}
		System.out.println(max);
		System.out.println(index);
	}
}

 

2577번

세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

예를 들어 A = 150, B = 266, C = 427 이라면 

A × B × C = 150 × 266 × 427 = 17037300 이 되고, 

계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
			예를 들어 A = 150, B = 266, C = 427 이라면 
			A × B × C = 150 × 266 × 427 = 17037300 이 되고, 
			계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
		 */
		Scanner sc = new Scanner(System.in);
		int n1 = sc.nextInt();
		int n2 = sc.nextInt();
		int n3 = sc.nextInt();
		int r = n1*n2*n3;
		int arr[] = new int[10];
		while(r != 0) {
			arr[r % 10]++;
			r /= 10;
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

 

3052번

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
			수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
		 */
		Scanner sc = new Scanner(System.in);
		int n[] = new int[10];
		int count = 0;
		for (int i = 0; i < n.length; i++) {
			n[i] = sc.nextInt()%42;
		}
		for (int i = 0; i < n.length; i++) {
			int cnt = 0;
			for (int j = i+1; j < n.length; j++) {
				if (n[i] == n[j]) {
					cnt++;
				}
			}
			if (cnt == 0) {
				count++;
			}
		}
		System.out.println(count);
	}
}

 

1546번

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
			수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
		 */
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int sub[] = new int[N];
		double M = 0;
		for (int i = 0; i < sub.length; i++) {
			sub[i] = sc.nextInt();
		}
		for (int i = 0; i < sub.length; i++) {
			if (M < sub[i]) {
				M = (double)sub[i];
				i--;
			}
		}
		double newSub[] = new double[N];
		double sum = 0;
		for (int i = 0; i < sub.length; i++) {
			newSub[i] = (double)sub[i]/M * (double)100;
			sum = newSub[i] + sum;
		}
		System.out.println(sum/(double)N);
	}
}

 

8958번

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다.
		 	문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
			"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
			OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
		 */
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int count;
		String answer[] = new String[n];
		for (int i = 0; i < answer.length; i++) {
			answer[i] = sc.next();
			int r = 0;
			count = 0;
			for (int j = 0; j < answer[i].length(); j++) {
				char c = answer[i].charAt(j);
				if (c == 'O') {
					count++;
				}
				else {
					count = 0;
				}
				r = r + count;
			}
			System.out.println(r);
		}
	}
}

 

4344번

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		/*
		 	첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
		 	
			둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고,
			
			이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
		 */
		Scanner sc = new Scanner(System.in);
		int count = sc.nextInt();
		int numberPeople, sum, overPeople;
		double r, per;
		
		for (int i = 0; i < count; i++) {
			numberPeople = sc.nextInt();
			sum = 0;
			overPeople = 0;
			r = 0;
			
			int score[] = new int[numberPeople];
			for (int j = 0; j < score.length; j++) {
				score[j] = sc.nextInt();
				sum = sum + score[j];
			}
			for (int j = 0; j < score.length; j++) {
				if (score[j] > (double)sum/numberPeople) {
					overPeople++;
				}
			}
			
			r = (double)overPeople/numberPeople * 100;
			
			per = Math.round(r*1000)/1000.0;
			
			System.out.printf("%.3f", per);
			System.out.println("%");
		}
	}
}

%.3f 소수점 3자리까지 출력

 

728x90
반응형
Comments