코딩테스트/백준

백준 1110번 : 더하기 사이클 (Java 11)

개발 집사 2021. 4. 26. 18:12

 문제 

 


 풀이 - Java 11 

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        int ten=0, one=0, newN= N ;

        int length = 0;
        while (true) {
            ten = (N % 100) / 10;
            one = N % 10;
            N = ((ten + one)%10)+(one*10);
            length+=1;
            if (N == newN) {
                sb.append(length);
            break;
            }
        }
        bw.write(String.valueOf(sb));
        bw.close();
        br.close();
    }
}

 알아야하는 개념 

StringBuilder

▪ 언제 사용할까?

String객체와 String객체를 더하는 행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능적으로 좋지 않다.

이를 해결하기 위해 StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적어진다.

 

즉, 어떤 클래스에 문자열을 생성하여 더하기 위한 문자열을 처리하기 위한 인스턴스 변수가 선언되었고, 여러 쓰레드에서 이 변수를 동시에 접근하는 일이 있을 경우에 사용한다.

 

사용법 (출력 : 안녕하세요 )

StringBuilder sb = new StringBuilder();
sb.append("안녕").append("하");
sb.append("세요");
System.out.println(sb.toString());          // 객체를 넘길 때 null이 존재할 경우 사용X
System.out.println(String.valueOf(sb));   // 객체를 넘길 때 null이 존재할 경우 사용O

 Thread safe

- StringBuffer > StringBuilder

 

 속도

- StringBuffer < StringBuilder