1. 백준 9093번
https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
이 문제를 풀기 위해 한 생각을 정리해보았다.
공백별로 단어를 배열의 item으로 저장한다 -> 배열의 각 요소를 뒤집어서 출력한다.
즉 words[0], words[1]에 공백 기준으로 분리한 단어들을 각각 저장하고 각 words[0], words[1]을 뒤집어서 출력한다.
import java.util.*;
import java.io.*;
import java.math.*;
import java.time.*;
public class Main {
public static int[] stack;
public static int size =0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
String[] words = br.readLine().split(" ");
for(String word: words) {
StringBuilder sb = new StringBuilder(word);
System.out.print(sb.reverse() + " ");
}
System.out.println();
}
br.close();
}
}
2. 백준 2530
import java.util.*;
import java.io.*;
import java.math.*;
import java.time.*;
public class app {
public static void main(String[] args) throws IOException {
//사이즈가 3인 배열 정의 첫번째 부터 시분초 순으로 숫자 저장
//시는 24가 되는 순간 0이 되고 분은 60이 되는순간 0이되고 초는 60이 되는 순간 0이된다
int[] time = new int[3];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int total = Integer.parseInt(br.readLine());
for(int i=0; i<3; i++) {
//time배열에 입력받은 시분초가 저장
time[i] = Integer.parseInt(st.nextToken());
}
int h = total/60/60;
int m = total/60%60;
int s = total%60%60;
time[0] += h;
time[1] += m;
time[2] += s;
if(time[2] >= 60) {
time[1] += time[2]/60;
time[2] %= 60;
}
if(time[1] >= 60) {
time[0] += time[1] /60;
time[1] = time[1] % 60;
}
if(time[0] >= 24) {
time[0] %= 24;
}
for(int i=0; i<3; i++) {
System.out.print(time[i] + " ");
}
}
}
이 문제를 풀기 위해 우선 사이즈가 3인 배열에 시분초 순으로 입력받은 숫자를 저장했다. 시분초가 초과되는 양을 계산해 올려주며 계산을 해주어야하기 때문에 조건문으로 예외 사항을 만들어주었다.
처음에는 '시'가 24이상일때 조건 -> '분'이 60이상일때 조건 -> '초'가 60이상일때 조건 이런식으로 구성해 제출했는데 틀렸었다. 이 반대로 해주어야한다. 왜냐하면 이 순서로 계산하게 되면 미처 계산하지 못하고 넘어가는 상황이 발생할 수도 있기 때문이다. 따라서 초->분-> 시 순으로 조건문을 작성해 만들어주어야한다.
3. 백준 10797
import java.util.*;
import java.io.*;
import java.math.*;
import java.time.*;
public class app {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int date = Integer.parseInt(br.readLine());
int[] cars = new int[5];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<5; i++) {
cars[i] = Integer.parseInt(st.nextToken());
}
int n = 0;
for(int i=0; i<5; i++) {
if(cars[i]==date) {
n++;
}
}
br.close();
System.out.println(n);
}
}
이 문제는 비교적 간단했다. 그냥 입력받은 자동차의 일의자리 수와 입력받은 날짜의 일의 자리수가 일치하면 횟수를 카운트하는 문제였다. 그리고 이렇게 간단한 문제에도 굳이 BufferedReader, StringTokenizer를 사용하는 이유는 System.in보다 빠르기 때문에 손에 익도록 학습하기 위해서 항상 이렇게 써버릇 하려고 하고있다.
'알고리즘' 카테고리의 다른 글
| [알고리즘]백준 2857 (0) | 2023.06.29 |
|---|---|
| [알고리즘] 백준 2525 (0) | 2023.06.29 |
| [알고리즘]백준 4153번: 직각삼각형 (0) | 2023.05.28 |
| [알고리즘]백준 2884번: 알람시계 (0) | 2023.05.28 |
| [알고리즘]백준 2588번 곱셈 (0) | 2023.05.28 |