[인프런] 자바 알고리즘 문제풀이 단어 뒤집기
들어가며
코딩테스트 준비를 위해 인프런에서 자바 알고리즘 문제풀이 강의를 수강하고 있다. 강의를 들으며 문제를 풀던 중 정리해두면 후에 유용할 것 같은 내용이 나와 포스팅을 해보려 한다.
단어 뒤집기
설명
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
입력
첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.
출력
N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.
예시 입력1
3
good
Time
Big
예시 출력1
doog
emiT
giB
Solution.Java
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
for(String s : str) {
String tmp = new StringBuilder(s).reverse().toString();
answer.add(tmp);
}
return answer;
}
public static void main(String[] arg) {
Main T = new Main();
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] str = new String[n];
for(int i = 0 ; i < n ;i++){
str[i] = scanner.next();
}
for(String x : T.solution(n, str)){
System.out.println(x);
}
scanner.close();
}
}
Array(배열)와 ArrayList 차이
Array | ArrayList | |
사이즈 | 초기화 시 고정 int[ ] arr = new int [3]; |
초기화 시 사이즈를 표기하지 않음 크기가 가변적 ArrayList<Integer> arrList = new ArrayList<> (); |
속도 | 초기화 시 메모리에 할당되어 ArrayList보다 속도가 빠름 |
데이터 추가, 삭제 시 메모리를 재할당하기 때문에 Array 보다 속도가 느림 |
크기 변경 | 사이즈 변경 불가 | 추가, 삭제 가능 add(), remove() |
다차원 | int[ ][ ][ ] multiArr = new int [3] [3] [3]; | 불가능 |
StringBuilder
StringBuilder를 사용하는 이유
String의 경우 String 끼리 더하거나, replace()와 같이 수정을 하려고 한다면 새로운 객체가 생성된다.
자바에서 String은 불변 객체이기 때문에 한 번 생성되면 내용 수정이 불가하기에 이러한 시도들은 새로운 문자열을 만들고 이전 객체들은 가비지 컬렉터로 들어간다.
프로젝트가 확장되며 수 많은 문자열을 생성하고 무분별하게 생성된 문자열을 합치거나 수정하려 한다면 메모리 낭비가 발생될 수 밖에 없다.
이러한 문제점을 극복하고자 등장한 것이 바로 StringBuiler이다.
StringBuiler는 수정하거나 추가하거나 삭제하거나 하는 일련의 작업들을 모두 최초에 생성한 객체에서 수행한다.
Reference
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
'🤖Algorithm' 카테고리의 다른 글
[백준] 에라토스테네스의 체 (0) | 2023.01.25 |
---|---|
[백준] A+B - 8 (feat. BufferedReader, BufferdWriter) (0) | 2022.11.16 |
[백준] 2741 N찍기 Java (0) | 2022.08.04 |
[백준] 15552 빠른 A+B Java (0) | 2022.08.01 |
[백준] 2480 주사위 세개 Java (0) | 2022.07.30 |