개발자 Saaad
[JAVA] 백준 5단계 (문자열) 문제 풀이 본문
1. 27866번 문자와 문자열
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 문자열을 입력받고 입력한 정수의 순서의 문자를 출력하는 예제
// 문자열 입력 받기
String str = br.readLine();
// i번 째 정수 입력 받기
int N = Integer.parseInt(br.readLine());
// charAt 메소드를 이용해 해당하는 인덱스 번째의 글자를 출력
char c = str.charAt(N - 1);
System.out.println(c);
}
}
2. 2743번 단어 길이 재기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 문자열을 입력받고 입력한 문자열의 길이를 출력하는 프로그램
// 문자열 입력 받기
int N = br.readLine().length();
System.out.println(N);
}
}
3. 9086번 문자열
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.
int N = Integer.parseInt(br.readLine());
// N번 문자열을 입력
for (int i = 0; i < N; i++) {
String str = br.readLine();
sb.append(str.charAt(0)).append(str.charAt(str.length()-1)).append("\n");
}
System.out.print(sb.toString());
}
}
4. 11654번 아스키 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때,
// 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.
// 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.
char c = (char)br.read();
System.out.println((int)c);
}
}
5. 11720번 숫자의 합
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
// 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
// 입력으로 주어진 숫자 N개의 합을 출력한다.
int N = Integer.parseInt(br.readLine());
String str = br.readLine();
int sum = 0;
for(int i = 0; i < str.length(); i++) {
sum += Integer.parseInt(str.substring(i, i+1)); // str.charAt(i) - '0' 로도 가능
}
System.out.println(sum);
}
}
6. 10809번 알파벳 찾기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서,
// 단어에 포함되어 있는 경우에는 처음 등장하는 위치를,
// 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
// 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
// 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서
// 출력한다.
// 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째
// 위치이다.
// 소문자 문자열 입력 받기
String str = (br.readLine()).toLowerCase();
int[] arr = new int[26];
// -1로 초기화
for (int i = 0; i < arr.length; i++) {
arr[i] = -1;
}
// 입력받은 문자열을 순회
for(int j = 0; j < str.length(); j++) {
char c = str.charAt(j);
// 최초 문자가 등장한 위치를 출력하기 위해
if (arr[c - 'a'] == -1) {
arr[c - 'a'] = j;
}
}
// 출력하기 위해 sb에 담음
for (int k = 0; k < arr.length; k++) {
sb.append(arr[k]).append(" ");
}
System.out.println(sb.toString());
}
}
7. 2675번 문자열 반복
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 테스트 케이스 개수 입력
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // 반복 횟수
String str = st.nextToken(); // 반복할 문자열
for (int j = 0; j < str.length(); j++) {
String c = String.valueOf(str.charAt(j));
sb.append(c.repeat(n));
}
sb.append("\n");
}
System.out.print(sb.toString());
}
}
8. 1152번 단어의 개수
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
StringTokenizer st = new StringTokenizer(S, " "); //공백 기준으로 S 문자열 쪼개기
System.out.println(st.countTokens());
}
}
9. 2908번 상수
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String A = st.nextToken();
String B = st.nextToken();
// StringBuilder를 이용하여 문자열 뒤집기
String reverse_A = new StringBuilder(A).reverse().toString();
String reverse_B = new StringBuilder(B).reverse().toString();
if (Integer.parseInt(reverse_A) > Integer.parseInt(reverse_B)) {
System.out.println(reverse_A);
} else {
System.out.println(reverse_B);
}
}
}
10. 5622번 다이얼
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String st = br.readLine();
int time = 0;
for (int i = 0; i < st.length(); i++) {
char c = st.charAt(i);
if (c >= 'A' && c <= 'C')
time += 3;
else if (c >= 'D' && c <= 'F')
time += 4;
else if (c >= 'G' && c <= 'I')
time += 5;
else if (c >= 'J' && c <= 'L')
time += 6;
else if (c >= 'M' && c <= 'O')
time += 7;
else if (c >= 'P' && c <= 'S')
time += 8;
else if (c >= 'T' && c <= 'V')
time += 9;
else if (c >= 'W' && c <= 'Z')
time += 10;
else
time += 11;
}
System.out.print(time);
}
}
11. 11718번 그대로 출력하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
String str = br.readLine();
if (str == null || str.isEmpty()) {
break;
}
sb.append(str).append("\n");
}
br.close();
System.out.println(sb.toString());
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[JAVA] 백준 6단계 (심화 1) 5~8 문제풀이 (1) | 2025.01.23 |
---|---|
[JAVA] 백준 6단계 (심화 1) 문제 풀이 (4번까지) (1) | 2025.01.22 |
[JAVA] 백준 4단계 (1차원 배열) 문제 풀이 (1) | 2025.01.20 |
[JAVA] 백준 3단계(반복문) 문제 풀이 (0) | 2025.01.15 |
[JAVA] 백준 2단계(조건문) 문제 풀이 (1) | 2025.01.14 |