조건문 단계의 마지막 문제이다. 우선 필자는 대충 중복이 없게끔 코드를 줄여보았다. import java.util.*; public class Ex2_7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt(); // 주사위1,2,3 int prize = 0; // 상금 if(a == b && b == c) // 세 주사위가 모두 동일 한 경우 prize = 10000 + a * 1000; else if(a == b || b == c || c == a) { // 2개가 동일한 경우 prize = 1000 + ((a ==..
이번 문제는 이전 문제의 약간은 심화된 문제이다. 이런 문제를 처음 보는 초보자들에겐 약간은 어렵게 다가올 수도 있다고 생각이 된다. 하지만, 논리를 잘 정리한다면 문제를 보다 쉽게 풀 수 있다. 먼저 내가 작성한 코드를 올리겠다. import java.util.*; public class Ex2_6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int hour = sc.nextInt(); // 시 int minute = sc.nextInt(); // 분 int addMinute = sc.nextInt(); // 추가 분 if(minute + addMinute < 59) // 추가 시간을 더해도 시의 변경이 ..
이번 문제는 시간에 관한 문제이다. 우선 나는 문제와 상관없이 유효성 검사를 하는 습관을 들이려고 유효성 검사를 일부러 하였다. 우리가 알다시피 시의 범위는 0 ~ 23, 분의 범위는 0 ~ 59이다. 출력값은 입력값의 45분 전 이므로, 분에서 45분을 뺐을 때 시의 변경이 있을 때만 신경을 써주면 되는 간단한 문제이다. 예를 들어 입력값의 분이 10 일 땐, 시의 변경은 1시간 전으로, 분의 변경은 10 + (60 - 45)분이다. (한 시간은 60분이니까) 하지만 여기서 끝나면 안된다. 왜냐하면 입력값이 0 30 일 땐 위의 조건만으론 출력값이 -1 45가 될 것이다. 그렇기에 분이 45 미만이고, 시가 0일 때만 시를 24로 변경하여 1시간을 빼는 법으로 구현을 했다. 마지막으로 분이 45분이 이..
이 문제도 매우 간단하다. 이 문제는 먼저 각 사분면일때의 x,y의 음수 양수를 확인하면 된다. 제 1사분면(양,양) 제 2사분면(음,양) 제 3사분면(음,음) 제 4사분면(음,양) 아래와 같이 할 수 있다. 이번에도 한 가지의 경우의 수를 줄여보자. import java.util.*; public class Step2_4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Math.x = sc.nextInt(); Math.y = sc.nextInt(); Math.Quadrant(); } } class Math { static int x, y; static void Quadrant() { int result = 1..
이번 문제는 나머지 연산자를 이용하여 풀면 되는 간단한 문제이다. 이번 문제도 이전 문제와 같이, else문을 생략할 수 있게끔 할 수 있다는 것이다. 그냥 기본값으로 변수 answer에 0으로 초기화를 하면 되는 것이다. 조금 더 자세하게 말하자면, year이 윤년일 때의 조건에만 answer 변수를 따로 1로 초기화하고 , 아닐 때는 0이라는 것과 같다고 생각하면 좋을 거 같다. import java.util.*; public class Step2_3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Year.year = sc.nextInt(); Year.getAnswer(); } } class Year { ..
이번 문제는 조건문을 배우면서 무조건 한 번씩은 모두 풀어봤을 거라 생각한다. 문제와 별개의 얘기지만, 메서드를 작성할 땐, 항상 올바른 입력값이 parameter로 넘어올 거란 기대는 버리는게 좋다. 그러므로 메서드를 작성할 때, 가장 먼저 해야할 것이 값의 유효성 검사이다. 아무튼 이번 코드의 포인트는 기본값을 어떻게 주느냐에 따라 else문을 생략 가능하다는 점과 if( 90 > score && score >= 80 )과 같이 복잡하게 쓰지 않아도 된다는 점을 확인하자. import java.util.*; public class Step2_2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Score s ..