오늘부터 다양한 문제들을 풀어보기 위해서 단계별로 정리되어있는 문제들을 풀어보기로 했다.
오늘은 입출력과 사칙연산, 조건문의 문제들을 풀어보았다.(13문제, 7문제 총 20문제)
처음 시작하는 문제들이다보니 브론즈 등급이라 어려울만한 문제는 없다.
하지만 유의해야 하는 문제 한두개만 작성해본다.
백준 1008 - 나눗셈
https://www.acmicpc.net/problem/1008
문제분석
나누기를 하면 되는 아주아주 별거아닌 문제이다.
하지만 여기서 출력 조건에 상대오차 10^-9이하면 정답이다. 라는 조건이 붙어있었다.
4 / 5 = 0.8 과 같이 소수가 나와도 허용이지만,
10 /3 = 0.3333333.... 과 같이 무한하게 나오는 소수는 제한해줘야 한다는 말이다.
// 출력을 소수점 아래 9자리까지 제한
DecimalFormat df = new DecimalFormat("0.000000000");
String formattedResult = df.format(result);
그래서 찾아보다가 DecimalFormat 이라는 것을 찾았다. DecimalFormat으로 숫자를 원하는 형식으로 표현할 수 있다.
DecimalFomat에 서식 문자열을 표현한 후 원하는 숫자의 format으로 형식을 지정해줄 수 있다.
정답
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
double result = (double) A / B;
// 출력을 소수점 아래 9자리까지 제한
DecimalFormat df = new DecimalFormat("0.000000000");
String formattedResult = df.format(result);
// 결과 출력
System.out.println(formattedResult);
sc.close();
}
}
백준 2884 - 알람시계
https://www.acmicpc.net/problem/2884
문제분석
문제는 길지만, 그냥 주어지는 시간에 45분을 빼서 표현하면 된다.
여기서 유의해야 하는점은 45분이 빠지므로, 상황을 45분을 빼서 시간이 바뀌느냐 안바뀌느냐 2개로 나눌 수 있다.
45분을 빼고 시간이 안바뀐다면, 그냥 그대로 분만 빼면 되고,
만약 45분을 빼서 시간이 줄어들 때는, 00시에서 빼서 23시로 넘어가는 상황도 고려해야 한다.
resultTime = (time - 1 + 24) % 24; // 음수가 발생하지 않도록 24로 나눈 나머지를 사용
resultMinute = 15 + minute; // 음수 방지를 위해 15를 더함
그래서 시간이 줄어들 경우, 시간에 24를 더한 후 다시 나머지를 사용해서, 음수가 나오지 않도록 한다.
예를들어 0시에서 1을 빼면 -1시가 되는데, 이걸 + 24해서 23시로 만들어줄 수 있다.
분의 경우에도 현재 분에서 45분을 빼게되면 분은 15분 + 현재 분만큼이 된다.
예를들어 42분에서 45분을 빼면 15 + 42분인 57분이 되게 된다.
정답
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int time = sc.nextInt();
int minute = sc.nextInt();
int resultTime;
int resultMinute;
if (minute >= 45) {
resultTime = time;
resultMinute = minute - 45;
} else {
resultTime = (time - 1 + 24) % 24; // 음수가 발생하지 않도록 24로 나눈 나머지를 사용
resultMinute = 15 + minute; // 음수 방지를 위해 15를 더함
}
// 결과 출력
System.out.println(resultTime + " " + resultMinute);
sc.close();
}
}
'Code Test > Java' 카테고리의 다른 글
백준 단계별 풀이 - 심화1 (1) | 2023.12.27 |
---|---|
백준 단계별 풀이 - 문자열 (1) | 2023.12.23 |
백준 단계별 풀이 - 반복문, 1차원 배열 (1) | 2023.12.21 |
백준 2018 - 수들의 합 5 (1) | 2023.12.19 |
백준 11659 - 구간합 구하기 4 (0) | 2023.12.14 |