-
[백준/BOJ] 11948번 : 과목선택 (JAVA / 자바)백준 2022. 1. 25. 20:01
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/11948
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
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); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 13866번 : 팀 나누기 (JAVA / 자바) (0) 2022.01.25 [백준/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