Jaeyoung Kim
나의 개발 공부 일지
Jaeyoung Kim
전체 방문자
오늘
어제
  • 분류 전체보기 (77)
    • WIL👨‍🏫 (16)
    • 🤖Algorithm (29)
    • 🖥CS (20)
      • 기술면접대비🔎 (10)
    • ✍️개발로그 (10)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기
  • 설정

공지사항

인기 글

태그

  • API
  • Java
  • 트랜잭션
  • SQLD
  • 개발로그
  • til
  • 백준2920
  • rest
  • 데이터자료구조
  • sql
  • HTTP
  • 회고록
  • 프로그래머스
  • transaction
  • 백준
  • 자바
  • WIL
  • N-gram parser
  • querydsl
  • 항해99

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Jaeyoung Kim

나의 개발 공부 일지

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

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

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

'🤖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
    '🤖Algorithm' 카테고리의 다른 글
    • [백준] 에라토스테네스의 체
    • [백준] A+B - 8 (feat. BufferedReader, BufferdWriter)
    • [백준] 2741 N찍기 Java
    • [백준] 15552 빠른 A+B Java
    Jaeyoung Kim
    Jaeyoung Kim
    보다 안정적인 코드 구현을 꿈꾸는 백엔드 개발자 지망생

    티스토리툴바