정보
분류 : 조건문
문제
풀이
package backjun;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int C = sc.nextInt();
int result = 0; // 결과 값
// 모두 동일한 숫자일 때
if(A == B && B == C && A == C) {
result = 10000 + A * 1000;
// 두 개의 숫자만 동일할 때
} else if(A == B || A == C) {
result = 1000 + A * 100;
} else if(B == C) {
result = 1000 + B * 100;
// 모두 다른 숫자일 때
} else {
// A,B,C 중 최대 값을 구해 result 변수에 할당
result = Math.max(Math.max(A, B), C) * 100;
}
System.out.println(result);
}
}
풀이 후기
모두 같은 숫자면 &&(AND)를 이용하여 세 개의 조건을 모두 충족해야 그에 대한 연산을 진행하고, 세 개의 조건 중 하나라도 틀리면 거짓(false)를 뱉어 다른 else if 쪽으로 넘어가게 두었다. 두 개의 숫자만 동일할 경우 ||(OR)을 이용하여 A 변수 기준 두 개의 조건 중 하나라도 참(true)일 경우 참(true)을 뱉어 그에 대한 연산을 진행한다. 모든 숫자가 동일하지 않다면 A, B, C 중 Math.max라는 함수를 사용해서 최대값을 추출하여 그에 대한 연산을 진행했다.
오답노트
처음엔 패키지명을 그대로 넣어버려서 런타임 에러가 떴다.
그 뒤로는 모두 코드가 이상해서 오답으로 체점 되었다.
초반엔 두개의 숫자만 동일할 때 ||가 아닌 &&을 써버려서 원하는 값이 나와지 않았었다.
- 첫번째 오답 부분
...
// 두개의 숫자만 동일할 때
//} else if(A == B && A == C) { // 수정 전
} else if(A == B || A == C) { // 수정 후
result = 1000 + A * 100;
} else if(B == C) {
...
첫번째 오답 부분 확인하고 나니 예시처럼 올바르게 값이 출력되는 점을 확인할 수 있었다.
하지만 백준은 여전히 오답이라고 알려준다.
찾다 찾다 너무 답답해서 질문 페이지로 가서 뭐가 문젠지 확인해달라고 글을 올렸다.
글 작성하자마자 답변해주신 천사같은 고수님이 계셨다!
그렇다.
초반부터 이상하게 코드를 짠 것이다...
- 두번째 오답 부분
...
// 두개의 숫자만 동일할 때
} else if(A == B || A == C) {
result = 1000 + A * 100;
} else if(B == C) {
//result = 1000 + A * 100; // 수정 전
result = 1000 + B * 100; // 수정 후
..
두번째 오류 부분을 확인하고 다시 채점했는데 또 다시 오답으로 나왔다.
뭔가 퍼센트(%)가 쭉쭉 올라가다가 85% 부터 안올라가서
최대값 구하는 부분이 문젠가 싶어 다른 블로그를 참고하였다.
일부 블로그에서 최대값을 Math.max 함수 사용하였기에
기존에 있던 코드를 지우고 Math.max 함수를 사용해보았다.
- 세번째 오답 부분
...
// 모두 다른 숫자일 때
} else {
int max = A;
/*if(max < B) {
max = B;
} else if(max < C) {
max = C;
}*/ // 수정 전
// A,B,C 중 최대 값을 구해 result 변수에 할당
result = Math.max(Math.max(A, B), C) * 100; // 수정 후
...
Math.max로 바꿔 최대값을 구하니까 정답이라고 되었다.
뭐가 문제일까..ㅠㅠ 당최 알 수 없다..
reference
'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글
A+B - 3 / 10950 (0) | 2023.11.13 |
---|---|
구구단 / 2739 (0) | 2023.11.13 |
오븐 시계 / 2525 (0) | 2023.11.09 |
알람 시계 / 2884 (1) | 2023.11.09 |
사분면 고르기 / 14681 (1) | 2023.11.09 |