본문 바로가기

분류 전체보기

(197)
[백준 2750 / 2751 Java] 수 정렬하기 - 선택 정렬 / Arrays / Collections 선택 정렬 첫 번째 인덱스부터 시작하여 뒤의 인덱스들의 값들과 비교하여 최솟값들을 차곡차곡 쌓아나가는 방법으로 구현하기 쉬우나 시간 복잡도가 O(n²)로 성능이 좋지 못하다는 단점이 있다. 1. 주어진 리스트 중에 최소값을 찾는다. (기본 오름차순) 2. 그 값을 맨 앞에 위치한 값과 교체한다. 3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 4. 하나의 원소만 남을 때까지 위의 과정을 반복한다. import java.util.Scanner; // 선택 정렬을 이용한 방법 public class Ex1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); in..
[백준 2331 Java] 분해합 / 각 자리의 합 구하기 브루트 포스란? 단순 무식한 알고리즘 문제를 해결하기 위해 가능한 모든 경우에 대해 직접 시도하는 방법으로 완전 탐색이라고도 함 이 문제를 풀 때, 1~1,000,000의 분해합을 모두 구해서 배열에 넣고 그 배열의 요소 중 사용자가 입력한 값이랑 일치하는 요소를 찾아서 그 요소의 인덱스 번호 중 가장 작은 값을 뽑아내려고 했다. 이 방법이 맞는지도 의문일 뿐더러, 어찌저찌 답은 나오더라도 아주 아주 비효율 끝판왕의 코드가 되기 때문에 단순하게 작은 수부터 분해합을 계산하기 시작해서 사용자가 입력한 값과 일치하는 값이 나오면 그 수가 정답이기 때문에 전부 다 계산하면서 힘을 뺄 필요가 없다...ㅠ_ㅠ 코드를 살펴보면서 이해를 해보자. import java.util.Scanner; // n을 입력받아 n의..
[백준 11729 Java] 하노이 탑 - 재귀, 분할 정복 분할 정복이란? 한 번에 해결하기 어려운 문제를 해결 가능한 단위로 나누고, 작은 문제들을 해결한 후 합쳐서 큰 문제를 해결하는 방법 아래 하노이 탑 예제를 보고 이를 적용해보자. * 원판의 개수가 2개, 3개라고 생각하고 그림을 그리면 이해가 빠를 것이다. 결국에는 같은 루트로 원판들이 옮겨지는 것이라고 생각하면 된다. * String 대신에 StringBuilder를 사용해서 탐색 속도를 빠르게 했다. 단순한 알고리즘에서는 큰 차이가 없지만 복잡해질수록 차이가 나므로 StringBuilder 사용에 익숙해지자. import java.util.Scanner; public class Ex4 { static StringBuilder sb = new StringBuilder(); // 이동 순서가 담길 배열..
재귀 함수 재귀 함수란? 함수 내에서 자기 자신을(함수)를 계속적으로 호출하면서 풀어가는 방식 함수가 콜 되면서 최근에 자신을 부른 원래 함수가 스택에 차곡차곡 쌓이게 됨. 중요한건 처음 불려진 함수에서(스택 맨 밑에있는 메소드) return 되는 값이 최종 return 값이 된다. 즉, 어떤 수 n을 선언했을 때, n부터 쭉 타고 들어가서 가장 작은 수까지 들어간 다음에 가장 작은 수가 해결이 되면 다시 값을 거슬러 올라가면서 계산을 해서 n!의 값을 반환한다. 팩토리얼 예제 public static int factorial(int n) { if(n == 1) { return 1; } return n * factorial(n-1); // n! = n * factorial(n-1) // 4! = 4 * 3! // ..
macOS 터미널에서 Tomcat & MySQL 실행 방법 터미널에서 Tomcat 실행 방법 // 1. 톰캣 경로로 이동 cd /usr/local/Cellar/tomcat/9.0.37/bin // 2. 서버 on ./catalina start // 3. 서버 off ./catalina stop // 4. 주소로 확인해보기 http://localhost:8080/ 터미널에서 MySQL 실행 방법 // MySQL 서버 시작 mysql.server start // MySQL DB 로그인 mysql -uroot -p // MySQL DB 로그아웃 exit 또는 quit // MySQL 서버 종료 mysql.server stop // MySQL 포트번호 확인하는 방법 SHOW GLOBAL VARIABLES LIKE 'PORT';
git push 실패할 때 아래와 같이 git을 push 할 때 오류가 발생할 수 있다. 이럴 때는 pull 할 사항이 있는지 확인해야 할 필요가 있다. 따라서 git pull을 먼저 실행하고, 다시 git push origin master를 하면 문제없이 작동하는 것을 알 수 있다!
[Git] .gitignore 설정하기 1. .gitignore 파일 생성 올리고자 하는 프로젝트의 .git 폴더가 있는 경로로 이동 후, .gitignore 파일을 생성해준다. 위치를 반드시 확인하자! cd /Users/abc/workspace/java sudo touch .gitignore 2. .gitignore 파일 작성 아래 코드는 Eclipse / Java / macOS 기준이다. www.toptal.com/developers/gitignore 위 사이트에서 해당하는 환경에 따라 파일 내용을 가져올 수 있다. # Created by https://www.toptal.com/developers/gitignore/api/macos,eclipse,java # Edit at https://www.toptal.com/developers/gi..
[백준 2908 Java] 문자열 뒤집기 - StringBuffer / StringBuilder StringBuffer 클래스를 이용하여 문자열을 뒤집을 수 있다. 문자열을 내림차순으로 배치하는 것이랑은 다르므로 주의!! StringBuffer().append(str) str 데이터를 현재 문자열 끝에 추가 StringBuffer().append(str).reverse() 역순으로 된 문자열 반환 StringBuffer().append(str).reverse().toString() StringBuffer 타입 -> String 타입으로 변환 그 밖에, StringBuilder도 StringBuffer와 똑같은 메서드를 가지고 있으니 참고하자. import java.util.Scanner; public class Ex07 { public static void main(String[] args) { S..