🤖Algorithm

[인프런] 자바 알고리즘 문제풀이 단어 뒤집기

Jaeyoung Kim 2022. 10. 11. 11:35
728x90

[인프런] 자바 알고리즘 문제풀이 단어 뒤집기

 

들어가며

코딩테스트 준비를 위해 인프런에서 자바 알고리즘 문제풀이 강의를 수강하고 있다. 강의를 들으며 문제를 풀던 중 정리해두면 후에 유용할 것 같은 내용이 나와 포스팅을 해보려 한다.


단어 뒤집기

 

설명

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

참깨빵위에참깨빵 - [Java] StringBuilerm란? StringBuilder 사용법

슬기로운 개발생활 - Array와 ArrayList의 차이

728x90