완전 탐색 - 브루트 포스(Brute Force)
·
알고리즘
브루트 포스? 브루트 포스(brute force)의 사전적 의미는 '무식한 힘'이다. 즉, 발생할 수 있는 모든 경우를 무식하게 탐색한다는 뜻이다. 전체를 탐색한다는 의미에서 전체 탐색, 완전 탐색이라고도 한다. 브루트 포스 알고리즘을 설계할 때는 '해가 하나 이상 존재한다.'는 가정을 세우고 모든 범위를 탐색하기 때문에 무조건 정답을 찾을 수 있다. 복잡한 알고리즘없이 빠르고 쉽게 구현이 가능하다는 장점이 있지만, 알고리즘의 실행시간이 오래걸리며 메모리 효율성이 떨어진다는 단점이 있다. 종류 선형 구조 : 순차탐색 비선형 구조 : 백트래킹, DFS, BFS 선형 구조 - 순차탐색 순차 탐색(Sequential Search)는 데이터가 모인 데이터 배열이 있으면 이 데이터 배열의 처음부터 끝까지 차례대로..
[ JAVA ] StringBuilder - 문자열 더하기
·
프로그래밍/JAVA
String은 불변의 객체다. String 객체 str1의 내용과 str2의 내용을 합치고자 하면 새로운 객체를 만들어 값을 저장해야한다. 즉, String객체끼리 덧셈 연산을 하게되면 메모리 할당과 메모리 해제를 발생시켜 연산의 횟수가 많아지게 된다.이때 필요한것이 바로 StringBuilder이다.생성자StringBuilder sb = new StringBuilder(): 객체 선언StringBuilder sb = new StringBuilder("aaa"): 문자열을 바로 넣을 수도 있다.주요 메소드.append(): 문자열을 추가한다..insert(int offset, String str): offset 위치에 str을 추가한다..replace(): 첫번째와 두번째 파라미터로 받는 숫자 인덱스에 ..
[ JAVA ] StringTokenizer()를 사용한 문자열 분리
·
프로그래밍/JAVA
BufferedReader()에 익숙해지기 위해 여러 입출력 문제를 풀던 중 만난 StringTokenizer(). 뭔지 정확히 모르지만 일단 사용하고 문제를 푼 뒤, 위 클래스에 대해 공부해보았다. StringTokenizer() BufferedReader()를 사용하여 입력을 읽어들이면 라인 단위로 읽어들일 수 밖에 없다. 이때 필요한것이 바로 문자열을 분리시켜주는 StringTokenizer인 것이다. 이 클래스를 사용하여 특정 문자에 따라 문자열을 나눌 수 있다. StringTokenizer를 생성하는 방식에는 3가지가 있다. StringTokenizer st = new StringTokenizer(문자열); StringTokenizer st = new StringTokenizer(문자열,구분자)..
백준#2609 GCD알고리즘 (유클리드 호제법)
·
알고리즘
문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 일단 이 문제를 처음 본 후 나는 머야 쉽네 하고 엄청난 자신감으로 for문을 써내려갔고 기특하게도 ' 맞았습니다!! '라는 문구가 나를 반겨줬다. 아래는 내가 작성한 코드이다. import java.io.*; import java.util.Scanner; public class NUM2609 { public static void main(String[] args) throws ..
백준#17425 약수의 합 구하기
·
알고리즘
문제 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더한 값이고, f(A)로 표현한다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)로 표현한다. 자연수 N이 주어졌을 때, g(N)을 구해보자. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 100,000)가 주어진다. 둘째 줄부터 테스트 케이스가 한 줄에 하나씩 주어지며 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 각각의 테스트 케이스마다, 한 줄에 하나씩 g(N)를 출력한다. 예제 입력 1 복사 5 1 2 1..
[ JAVA ] 배열 정렬
·
프로그래밍/JAVA
자바는 배열을 정렬할 때 반복문이 필요없다는것을 몰랐다. 백준 문제를 풀면서 자바를 공부하려고 했는데 이론을 먼저 공부 해야되나 고민이 되긴하지만 그랬다가는 너무 속도가 떨어질거같다..ㅜㅜ 역시 독학은 쉽지 않은거같다. Arrays.sort() 배열 오름차순 Arrays.sort(변수명)을 사용하여 간단하게 오름차순 정렬이 가능하다. import java.util.Arrays; public class SortUp public static void main(String[] args){ int[] array = {56, 78, 26, 19, 47}; Arrays.sort(array); //배열 오름차순 정렬 for(int i=0; i
[ JAVA ] 배열
·
프로그래밍/JAVA
배열을 선언할때  참조변수만 먼저 선언하여 크기 및 값을 이후에 초기화 하는 것도 가능하고 최초 선언시 부터 배열의 크기 및 값을 할당해 주는 것도 가능하다.배열의 길이는 최초에 선언된 값으로 고정되며, 숫자 배열은 0으로, 문자열 배열은 null로, boolean 배열은 false로 값이 초기화 된다.import java.io.*;import java.util.Scanner;public class ARRAY{ public static void main(String[] args)throws IOExceptions{ Scanner sc = new Scanner(System.in); int a = sc.nextInt(); //배열 길이용 변수 ..
[ JAVA ] 표준 입출력
·
프로그래밍/JAVA
자바에서는 사용자 요청사항에 대한 응답 메시지를 전달하기 위해 System 이라는 표준 입출력 클래스를 제공한다. System 클래스는 다음 세 가지 필드를 가지고 있다.out : PrintStream / 표준 출력 스트림in : InputStream / 표준 입력 스트림err : PrintStream / 표준 에러 출력 스트림stream은 JAVA의 후반부 내용이어서 아직 정확하게 무엇인지는 모른다..일단은 데이터의 흐름 정도로 알고있자. 표준 출력System.out()print() : 줄바꿈을 하지 않고 출력println() : 줄바꿈을 해주면서 출력printf() : 지정된 형식의 문자열을 출력System.out.print("ABCD");System.out.println("EFGH");int x =..