-
[백준/BOJ] 4299번 : AFC 윔블던 (JAVA / 자바)백준 2022. 1. 24. 15:16
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/4299
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
먼가 엄청 긴 문제지만 결국 봐야할건 입력과 출력이다.
우선 패턴을 파악한다. 두 점수의 합과 차가 있으려면 결국 합과 차의 합은 짝수가 되야한다.
두 점수의 합과 차의 합이 홀수가 되면 (직접 몇개 잡고 계산해보면 알겠지만) 두 점수가 나올 수가 없다.
그러니 if문으로 두 점수의 합과 차의 합이 홀수 짝수 여부를 판단해서 홀수일 경우 점수가 안나오니 -1을 출력하고, 짝수일 결우에 두 점수를 구하는 연산을 한다.
두 점수를 구하는건 두 점수의 합과 차의 합을 2로 나누면 두 점수중 높은 점수가 나올 것이고 그 점수에다 두 점수의 차를 빼주면 나머지 점수가 나온다. 코드로 보자.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int A = Integer.parseInt(st.nextToken()); int B = Integer.parseInt(st.nextToken()); //짝수 여부는 (짝수여부 궁금한 수) % 2 == 0을 하면 된다. //그리고 당연한거지만 두 수의 합이 차보다 커야하니깐 A가 B보다 작으면 안된다는 조건도 넣어준다. if((A + B) % 2 != 0 || A < B) { System.out.println(-1); }else { //두 수를 공백을 두고 출력하라 했으니 식 사이에 공백을 넣어준다. System.out.println(((A + B) / 2) + " " + (((A + B) / 2) - B)); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 5543번 : 상근날드 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 5532번 : 방학 숙제 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 3004번 : 체스판 조각 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 2753번 : 윤년 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 2752번 : 세수정렬 (JAVA / 자바) (0) 2022.01.23