drexqq
[Java, 자바] 백준알고리즘 단계별로 풀기 - 6단계 본문
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자리까지 출력
'공부노트 > 백준알고리즘' 카테고리의 다른 글
[Java, 자바] 백준알고리즘 단계별로 풀기 - 5단계 (0) | 2020.06.01 |
---|---|
[Java, 자바] 백준알고리즘 단계별로 풀기 - 3단계 (0) | 2020.05.29 |
[Java, 자바] 백준알고리즘 단계별로 풀기 - 2단계 (0) | 2020.05.26 |
[Java, 자바] 백준알고리즘 단계별로 풀기 - 1단계 (2) | 2020.05.26 |