Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- 완전탐색
- 스택
- 코틀린
- component
- 그래프
- BFS
- 문자열다루기
- 백준
- 생명주기
- 트리
- 안드로이드
- 이분탐색
- dfs
- 배열
- BOJ
- 프로그래머스
- 카카오블라인드
- 동적계획법
- 코딩테스트
- 다이나믹프로그래밍
- 분할정복
- 자바
- 세그먼트트리
- 운영체제
- 문자열
- Android
- 코딩
- GIT
- activity
Archives
- Today
- Total
HS_development_log
백준 9093번 - 단어 뒤집기 / Java 본문
반응형
문제
https://www.acmicpc.net/problem/9093
문자열을 다루는 문제.
보는 순간 떠오른 두 개의 풀이가 있었다.
1. 스택을 활용해 단어를 뒤집는다
2. 자바의 String 관련 라이브러리를 활용하여 뒤집는다
1번은 단어를 계속 push 하다가 빈칸이 나오면 pop을해서 출력해주는 간단한 방법
필자는 2번 알고리즘을 사용하여 풀이를 진행했다.
알고리즘
- split 메서드를 사용하여 빈칸을 기준으로 스트링 배열을 만든다
- StringBuilder의 reverse메서드를 사용하여 배열 요소마다 뒤집는다.
소스코드 및 설명
1,2번 알고리즘
1
2
3
4
5
6
7
8
|
for(int i=0;i<list.size();i++) {
String[] str = list.get(i).split(" "); // 공백을 기준으로 단어를 자른다
StringBuilder revStr = new StringBuilder();
for(int j=0;j<str.length;j++) {
revStr.append(new StringBuilder(str[j]).reverse()+" "); // 뒤집어서 붙인다
}
answer.add(revStr.toString().trim()); // 앞뒤공백제거
}
|
cs |
전체 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import java.util.*; /* * BOJ 9093 * 2020.01.15 * Hyeonseong */ public class BOJ9093 { public static void main(String[] args) { Solution s = new Solution(); s.solution(); } } class Solution{ int n; // 테스트케이스 수 ArrayList<String> list; // 입력받는 문장 ArrayList<String> answer; // 정답 Solution(){ Scanner scan = new Scanner(System.in); list = new ArrayList<String>(); answer = new ArrayList<String>(); n = scan.nextInt(); scan.nextLine(); for(int i=0;i<n;i++) { list.add(scan.nextLine()); } } public void solution() { for(int i=0;i<list.size();i++) { String[] str = list.get(i).split(" "); // 공백을 기준으로 단어를 자른다 StringBuilder revStr = new StringBuilder(); for(int j=0;j<str.length;j++) { revStr.append(new StringBuilder(str[j]).reverse()+" "); // 뒤집어서 붙인다 } answer.add(revStr.toString().trim()); // 앞뒤공백제거 } for(String s : answer) { System.out.println(s); // 출력 } } } | cs |
반응형
'Algorithm-백준 > 문자열처리' 카테고리의 다른 글
백준 1032번 - 명령 프롬프트 / Java (0) | 2020.07.24 |
---|---|
백준 9935번 - 문자열 폭발 / Java (0) | 2020.01.30 |
백준 2799번 - 블라인드 / Java (0) | 2020.01.17 |
백준 9012번 - 괄호 / Java (0) | 2020.01.15 |