달달한 스토리

728x90
반응형

출처 핀터레스트

 

오늘은 3문제를 풀었다.

 

문제를 풀다가 String과 StringBuffer와 StringBulider의 차이점에 대해서

 

검색해보았다.

 

String 같은 경우는 하나의 메모리 주소를 가지고 있기 때문에

 

값이 변하지 않는 immutable 성격을 가지고 있다.

 

그런데 이 String의 문자열을 붙이면, 기존의 있던 String의 주소가

 

힙 메모리에 임시로 저장되게 되어, 성능 저하로 이어진다.

 

이러한 문제를 해결하기 위해 두 가지 해결방안이 제시된다.

 

StringBuffer와 StringBuilder이다.

 

이 둘 중 어느 것을 써도 상관은 없다. 

 

하지만, 코드 양이 많아지고, 문자열 연산이 많아지면, 두 개중에서 적절한 것을 사용해야 한다.

 

StringBuffer 같은 경우는 동기화를 고려하고, 멀티 스레드 환경에서 적합하고,

 

StringBuilder는 동기화를 고려하지 않고, 단일 쓰레드 환경에서 적합하다. 

 

내가 쓴 것은 StringBuilder를 사용하였다.

 

반응형

 

https://github.com/qjsqjsaos/CodingTest

 

GitHub - qjsqjsaos/CodingTest: 하루에 하나씩 목표로 하는 코딩테스트

하루에 하나씩 목표로 하는 코딩테스트. Contribute to qjsqjsaos/CodingTest development by creating an account on GitHub.

github.com

1021

 

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));
        int length = Integer.parseInt(br.readLine());
        StringTokenizer st = null;
        for(int i = 0; i < length; i++) {
            st = new StringTokenizer(br.readLine());
            int first = Integer.parseInt(st.nextToken());
            int second = Integer.parseInt(st.nextToken());
            System.out.println("Case #" + (i + 1) + ": " + (first + second));
        }
    }
}

 

1022

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Test11022 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int length = Integer.parseInt(br.readLine());
        StringTokenizer st;

        for(int i = 1; i < length + 1; i++) {
            st = new StringTokenizer(br.readLine());
            int first = Integer.parseInt(st.nextToken());
            int second = Integer.parseInt(st.nextToken());
            System.out.println("Case #" + i + ": " +  first + " + " + second + " = " + (first + second));
        }
    }
}

 

2438

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test2438 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int length = Integer.parseInt(br.readLine());

        String star = "*";

        StringBuilder sb = new StringBuilder();
        sb.append(star);

        for(int i = 0; i < length; i++) {
            System.out.println(sb);
            sb.append(star);
        }
    }
}
728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading