조건문 단계 역시 단순한 If문의 연속인 만큼 크게 어려운 문제는 없었다.
몇가지 기초적인 실수를 했던 것을 다시 한번 복습해본다.
9498번 - 시험 성적 (브론즈 5)
class Main{
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int point = sc.nextInt();
switch(point)
case point >= 90 :
System.out.println('A');
break;
case point < 90 && point >= 80 :
System.out.println('B');
break;
case point < 80 && point >= 70 :
System.out.println('C');
break;
case point <70 && point >= 60 :
System.out.println('D');
break;
case point < 60 :
System.out.println('F');
break;
}
}
처음 생각으론 그냥 switch 문에 넣고 한번에 돌려버려야지 라고 생각했지만... switch 문에는 비교 연산자 사용이 안된다는 것을 잠깐 잊고 있었다. 결과는 당연하게 컴파일 에러...
다음과 같은 코드로 변환하였다.
Scanner sc = new Scanner(System.in);
int point = sc.nextInt();
Character result = 'F';
result = point >= 90?'A':
point<90 && point>=80?'B' :
point<80 && point>=70?'C' :
point<70 && point>=60?'D' : 'F';
System.out.println(result);
삼항 연산자를 여러번 반복하여 한번에 구현하였다. Scanner를 사용한 만큼 시간 자체는 조금 높게 나왔다.
다른 하나는 그냥 간단한 발상의 전환이였는데
2884번 - 알람 시계 (브론즈 3)
if(m - 45 < 0){
m = m + 60 - 45;
h = h - 1;
} else {
m = m - 45;
}
if(h<0){
h = h + 24;
}
처음에는 이렇게 If문으로 일일히 구분하게 코드를 구성했는데 다른 사람의 코드를 보다가 굳이 이렇게 구현할 필요가 없다는 것을 알았다. 어차피 전체를 분으로 변환한뒤 추후 출력시에 시간은 /60으로 변환해 주고 분은 %60으로 나머지만 표현하면 되는 문제였던 것.
시험 삼아 다음 문제인 오븐 시계에서는 If문 없이 위의 계산식으로 구현해 보았다.
2525번 - 오븐 시계 (브론즈 3)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int m = Integer.parseInt(arr[0]) * 60 + Integer.parseInt(arr[1]);
m += Integer.parseInt(br.readLine());
br.close();
System.out.println(m/60%24 + " " + m%60);
시간이 24시간이 넘어가는 경우가 발생할 수 있으니 %24만 추가해 주고 계산식으로 처리해버리니 훨씬 깔끔하게 결과를 얻을 수 있었다.
'JAVA > 코딩 테스트' 카테고리의 다른 글
백준 문제 풀이 - 문자열 단계 (0) | 2023.08.14 |
---|---|
백준 문제 풀이 - 1차원 배열 단계 - 10811번 바구니 뒤집기 (0) | 2023.08.12 |
백준 문제 풀이 - 1차원 배열 단계 - 5579번 과제 안 내신 분...? (0) | 2023.08.11 |
백준 문제 풀이 - 반복문 단계 (0) | 2023.08.09 |
백준 문제 풀이 - 입출력과 사칙연산 단계 (0) | 2023.08.07 |