Algorithm & Data Structure

    java.lang.StringBuilder (가변적인 문자열)

    StringBuilder 클래스 StringBuilder와 StringBuffer 클래스는 String 클래스와 같이 문자열을 다루는 클래스이다. But, String 클래스는 문자열을 넣을 경우, 생성자의 크기에 맞게 길이가 생성되며 한번 생성하고 나면 문자열 값을 변경하지 못하는 단점이 있다. 이를 보완하는 것이 StringBuilder와 StringBuffer 클래스이다. 즉, 한번 생성한 인스턴스 안의 문자열 (char 배열)을 추가&변경할 수 있어 String클래스의 문제를 보완한다. 두 클래스는 거의 비슷하지만(쓰임과 메소드가 같지만) StringBuffer는 동기화 처리를 할 수 있다. 즉, 여러 곳에서 동시에 같은 문자열 인스턴스에 접근할 때 중복 접근을 막을 수 있는 장치를 가지고 있다...

    [JAVA] baekjoon 10871

    [JAVA] baekjoon 10871

    [문제] [나의 생각] Scanner 라이브러리를 이용해서 해결할 수도 있다. BufferedReader를 사용했을 때 조금 더 시간이 덜 걸린다는 사실! 본인은 두번째 줄의 입력문에 대해서도 for문을 사용할 수 있다 생각하지 못해서 헤맸다. StringBuilder는 변경 가능한 문자열이다. (String은 변경 불가능) String을 합치는 작업 시에 유용하게 쓰인다. 방법은 1. StringBuilder의 객체 생성 2. StringBuilder의 객체의 append()로 연결하고자하는 문자열을 붙인다. -> 변경 가능한 문자열 완성! import java.util.*; import java.io.*; public class baekjoon10871 { public static void main(..

    [JAVA] baekjoon 15552

    [JAVA] baekjoon 15552

    브론즈 2 문제. 빠른 A+B 15552번: 빠른 A+B (acmicpc.net) 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 문제를 풀기 전, 필요한 개념을 공부해야한다. Buffer 데이터를 한곳에서 다른 곳으로 전송하는 동안 일시적으로 데이터를 보관하는 임시 메모리 영역 버퍼를 이용해서 읽고 쓰면 속도 향상에 효율적 메모리 버퍼에 데이터를 한데 묶어서 이동시키는 것! Buffer Flush (버퍼 플러시) 버퍼에 남아있는 데이터를 출력 (버퍼를 비우는 동작) BufferedReader : 버퍼를 이용한 입력 엔터만 경계..

    [JAVA] baekjoon 1271

    [JAVA] baekjoon 1271

    https://www.acmicpc.net/problem/1271 1271번: 엄청난 부자2 첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수) www.acmicpc.net 브론즈 5 문제이다. BigInteger int(약 -+20억, -2,147,483,648 ~ 2,147,483,647)와 long(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)보다 더 큰 범위의 타입 무한의 정수가 들어갈 수 있는 가능성이 있다면 BigInteger이라는 클래스를 활용하는 것이 좋음 알고리즘 문제에서 최악의 경우를 대비하고자 사용하기도 함 BigInteger을 초기화..

    [Concept] 재귀 용법

    [Concept] 재귀 용법

    재귀 용법 함수 안에서 동일한 함수를 호출하는 형태 여러 (고급정렬 포함한) 알고리즘 작성시 사용되므로, 익숙해져야 합니다. 스택의 구조와 똑같이 동작이 이루어집니다. 파이썬에서 재귀 함수는 깊이가(한번에 호출되는...) 1000회 이하가 되어야 합니다. 함수를 하나 만든다. 함수(n) 은 n > 1 이면 return n X 함수(n - 1) 함수(n) 은 n = 1 이면 return n 예시 2! 1. 함수(2) 이면, 2>1 이므로, 2 X 함수(1) 2. 함수(1)은 1이므로, return 2 X 1 = 2 3! 1. 함수(3)이면, 3>1이므로, 3 X 함수(2) 2. 함수(2)이면, 2>1이므로, 3 X 2 X 함수(1) 3. 함수(1)은 1이므로, return 3 X 2 X 1 = 6 psud..

    삽입 정렬

    삽입정렬은 정렬 범위를 1칸씩 확장해나가면서 새롭게 정렬 범위에 들어온 값을 기존 값들과 비교하여 알맞은 자리에 꼽아주는 알고리즘입니다. 예제와 함께 보는 정렬 방식 맨 처음 두개의 값을 정렬범위로 시작합니다. 1. 1을 앞에 있는 2와 비교. (맨 첫번째 값이니 끝) => [2, 1, 5, 4, 3] 더 큰 값이네? 1과 swap => [1, 2, 5, 4, 3] 2. 한 칸을 더 확장하여 그 값을 정렬된 배열과 비교. 5를 앞에있는 2와 비교. => [1, 2, 5, 4, 3] 바꿀 필요 없으니 교환하지 않고 끝. 3. 한 칸을 더 확장하여 4를 앞에있는 5와 비교. => [1, 2, 5, 4, 3] 더 큰 값이네? 5와 swap => [1, 2, 4, 5, 3] 2와 바꿀 수 없으니 비교 종료. 4..