-
[백준/BOJ] 11948번 : 과목선택 (JAVA / 자바)백준 2022. 1. 25. 20:01
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/11948
11948번: 과목선택
JOI는 물리, 화학, 생물, 지구과학, 역사, 지리 총 6 과목의 시험을 봤다. 각 시험의 만점은 100점이다. JOI는 물리, 화학, 생물, 지구과학 4과목 중에서 3 과목을 선택하고 역사, 지리 2 과목 중에
www.acmicpc.net
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
2가지로 풀어보겠다.
배열과 Arrays.sort(정렬)을 이용해 최솟값을 제하는 방법
for문으로 모든 수를 더하고 최솟값들을 뺴주는 방법
코드를 보면 하단에 주석으로 뒤에 두과목을 비교하는 방법은 배열이나 for문이 아닌 그냥 입력 후 Math.max함수로 판단하는 방법이다. 전체적으로 자신이 더 나은 것 같다 생가하는 방법을 사용하면 될거같다.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //4개짜리 과목과 2개짜리 과목 배열 생성 int[] arr = new int[4]; int[] arr2 = new int[2]; //배열에 저장 for(int i = 0; i < 4; i++) { arr[i] = Integer.parseInt(br.readLine()); } //정렬 Arrays.sort(arr); //최솟값 제외하고 합산 int sum = arr[1] + arr[2] + arr[3]; //나머지 두과목 배열에 점수 입력 arr2[0] = Integer.parseInt(br.readLine()); arr2[1] = Integer.parseInt(br.readLine()); Arrays.sort(arr2); //큰 값을 합산 sum += arr2[1]; /*이 공식은 숫자 두개는 굳이 반복문 사용하지 않고 두수를 Math 함수로 최대값을 구해서 최대값만 sum에 합하는 방식이다. int A = Integer.parseInt(br.readLine()); int B = Integer.parseInt(br.readLine()); sum += Math.max(A, B);*/ System.out.println(sum); } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //총 합을 넣을 변수를 선언 int sum = 0; //최솟값을 넣을 변수를 100으로 선언 int min = 100; //앞 4과목 총 합을 구하고 4과목 중 최솟값을 구하는 반복문 for(int i = 0; i < 4; i++) { int N = Integer.parseInt(br.readLine()); sum += N; if(min > N) { min = N; } } //구한 최솟값을 합에서 뻄 sum -= min; //남은 두과목 중 최솟 값을 다시 구해야하니 100으로 초기화 min = 100; //남은 두과목의 합과 최솟 값을 다시 구하는 반복문 for(int i = 0; i < 2; i++) { int N = Integer.parseInt(br.readLine()); sum += N; if(min > N) { min = N; } } sum -= min; /*이 공식은 숫자 두개는 굳이 반복문 사용하지 않고 두수를 Math 함수로 최대값을 구해서 최대값만 sum에 합하는 방식이다. int A = Integer.parseInt(br.readLine()); int B = Integer.parseInt(br.readLine()); sum += Math.max(A, B);*/ System.out.println(sum); } }
-결과-
배열 for문만 이용
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 13136번 : Do Not Touch Anything (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11948번 : 과목선택 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11943번 : 파일 옮기기 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 11282번 : 한글 (JAVA / 자바) (0) 2022.01.25 [백준/BOJ] 10797번 : 10부제 (JAVA / 자바) (0) 2022.01.25