728x90

Java 16

CS 공부 - 자바(JAVA)

1. 자바 특징 - 자바는 객체 지향 프로그래밍 언어이다. - 객체 지향 언어의 특징인 캡슐화, 상속성, 다형성을 지원한다. - 장점 (1) 가비지 콜렉터(Garbage Collector)를 통해 메모리를 자동으로 관리한다. (2) JVM(가상머신)을 통해 실행되기 때문에, 운영체제에 의존하지 않는다.(독립적) (3) 오픈소스 라이브러리가 풍부하다. - 단점 (1) JVM(자바가상머신)을 통해 실행되기 때문에, 다른 언어에 비해 실행 속도가 느리다. (2) 다른 언어에 비해 코드의 길이가 긴 편이다. (3) 다중 상속이나 타입에 엄격하며, 제약이 많다. + JVM이란? - JVM(Java Virtual Machine)은 운영체제에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터..

CS 2022.07.07

[백준 9461] 파도반 수열 - 자바(java)

이번 문제는 간단합니다. 규칙만 찾으면 됩니다. 위 수열들을 나열하면 다음과 같습니다. N=1일 때, 1 N=2일 때, 1 N=3일 때, 1 N=4일 때, 2 N=5일 때, 2 N=6일 때, 3 N=7일 때, 4 N=8일 때, 5 N=9일 때, 7 N=10일 때, 9 N=11일 때, 12 ... 이 수열에서 다음과 같은 규칙을 찾을 수 있습니다. f(N) = f(N-2) + f(N-3) 이 규칙을 이용해 문제를 풀면 됩니다. 알고리즘 1. BufferedReader로 T 입력받기 2. 위에서 찾은 규칙을 이용해 N번째 변의 길이를 구해 출력합니다. 완성된 코드는 다음과 같습니다. 결과는 틀렸습니다. 2차 코드입니다. 결과는 맞았습니다. 첫 번째 코드와 다른 점은 배열 arr의 형태입니다. 첫 번째 코드에..

Algorithm/baekjoon 2021.03.24

[백준 1904] 01타일 - 자바(java)

이번 문제는 문제 이해만 하면 간단합니다. 타일들의 종류는 00타일과 1타일이므로, 모든 가짓수 N=1일 때, 1 1개 N=2일 때, 00 11 2개 N=3일 때, 001 100 111 3개 N=4일 때, 0011 1100 1001 0000 1111 5개 N=5일 때, 00111 10011 11001 11100 00001 00100 10000 11111 8개 .. 이렇게 됩니다. 여기서 규칙을 찾게 되면, n일 때, 만들 수 있는 모든 가짓수는 (n-2)번째 모든 가짓수 + (n-3)번째 모든 가짓수 입니다. 이를 이용해 알고리즘을 구성합니다. 알고리즘 1. N을 BufferedReader로 입력받습니다. 2. 모든 가짓수들의 배열을 arr배열이라 하고, arr배열의 0번째, 1번째, 2번째 인덱스를 초..

Algorithm/baekjoon 2021.03.15

[백준 1003] 피보나치 함수 - 자바(java)

동적 계획법 1 단계의 첫 번째 문제입니다. 동적 계획법은 큰 문제로 작은 문제로 나누어서 푸는 방식의 알고리즘으로, 재귀 구조를 활용하는 방식입니다. 피보나치 수열이란? 쉽게 말해 다음과 같은 수열을 피보나치 수열이라 합니다. (0) 1 1 2 3 5 8 13 21 34 55 .. 이와 같이 n번째 수를 구하기 위해 n-1번째 수와 n-2번째 수를 합하는 방식의 수열입니다. N값에 따라 0의 횟수와 1의 횟수를 적어본 것은 다음과 같습니다. N 0의 횟수 1의 횟수 0 1 0 1 0 1 2 1 1 3 1 2 4 2 3 5 3 5 6 5 8 이렇게 표를 적어보면 다음과 같은 규칙을 찾을 수 있습니다. N의 0의 횟수 : N-2의 0의 횟수 + N-1의 0의 횟수 N의 1의 횟수 : N-1의 0의 횟수 +..

Algorithm/baekjoon 2021.03.15

[백준 9663] N-Queen - 자바(java)

개인적으로 어려웠던 문제입니다.. 우선 퀸의 이동 범위부터 알아야 합니다. 퀸은 다음 그림과 같이 상화좌우와 대각선을 갈 수 있습니다. 이러한 퀸의 움직임을 이용해 문제를 풀어야 합니다. 문제를 풀기 전 수기로 풀어보면 예를 들어, 1. 첫째 줄 두 번째 칸에 퀸을 놓으면, 다음과 같은 자리에는 퀸을 놓을 수 없습니다. X 퀸 X X X X X X X X 2. 그러면 두 번째 줄에는 놓을 수 있는 자리가 하나이므로 두 번째 줄 네 번째 칸에 퀸을 놓습니다. X 퀸 X X X X X 퀸 X X X X X 3. 세 번째 줄에서는 첫 번째 칸에 퀸을 놓을 수 있으므로 퀸을 놓습니다. X 퀸 X X X X X 퀸 퀸 X X X X X X 4. 마지막으로 네 번째 줄에도 퀸을 놓아줍니다. X 퀸 X X X X X..

Algorithm/baekjoon 2021.03.09

[백준 15652] N과 M (4) - 자바(java)

이번 문제는 "N과 M (1)" 문제와 유사합니다. 이 문제에 개념 정리와 풀이가 자세히 쓰여있습니다. 이걸 보시고 이번 문제를 푸는 것을 추천합니다. jinijiniblog.tistory.com/51 [백준 15649] N과 M (1) - 자바(java) 백트래킹 단원의 첫 번째 문제입니다. 백트래킹(Backtracking)이란? 이전에 배웠던 브루트포스 방법은 가능한 모든 수들을 다 찾는 방법이었지만, 백트래킹은 이보다 더 효율적인 방법이라 할 수 있 jinijiniblog.tistory.com 알고리즘 1. BufferedReader로 n와 m 입력받기 2. 중복 상관없이 고른 수열이 비내림차순이 되도록 수들을 고릅니다. 3. StringBuilder로 결과를 출력합니다. 완성된 코드는 다음과 같습..

Algorithm/baekjoon 2021.03.02

[백준 15651] N과 M (3) - 자바(java)

이번 문제는 앞에 "N과 M (1)" 문제와 유사합니다. 먼저 참고하고 푸시면 좋을 것 같아요. jinijiniblog.tistory.com/51 [백준 15649] N과 M (1) - 자바(java) 백트래킹 단원의 첫 번째 문제입니다. 백트래킹(Backtracking)이란? 이전에 배웠던 브루트포스 방법은 가능한 모든 수들을 다 찾는 방법이었지만, 백트래킹은 이보다 더 효율적인 방법이라 할 수 있 jinijiniblog.tistory.com 또한, 이번 문제에서는 이전 문제에서처럼 Scanner를 쓴다면 시간 초과가 나게 됩니다. 고로 BufferedReader와 StringBuilder를 사용해 입출력을 해주겠습니다. 알고리즘 1. BufferedReader로 n과 m을 입력받습니다. 2. 중복 상..

Algorithm/baekjoon 2021.03.02

[백준 15650] N과 M (2) - 자바(java)

이번 문제는 저번 N과 M (1) 문제와 비슷합니다. 전 문제를 먼저 보고 풀기 권장합니다. jinijiniblog.tistory.com/51 [백준 15649] N과 M (1) - 자바(java) 백트래킹 단원의 첫 번째 문제입니다. 백트래킹(Backtracking)이란? 이전에 배웠던 브루트포스 방법은 가능한 모든 수들을 다 찾는 방법이었지만, 백트래킹은 이보다 더 효율적인 방법이라 할 수 있 jinijiniblog.tistory.com 알고리즘 1. Scanner로 n과 m 입력받기 2. 고른 수열이 오름차순이 되도록 합니다. 3. 결과를 출력합니다. 완성된 코드는 다음과 같습니다. 앞 문제와 다른 점은 31번째 줄입니다. 조건문을 사용해 중복 없이 고른 수열들이 오름차순이 되게끔 했습니다.

Algorithm/baekjoon 2021.03.02

[백준 15649] N과 M (1) - 자바(java)

백트래킹 단원의 첫 번째 문제입니다. 백트래킹(Backtracking)이란? 이전에 배웠던 브루트포스 방법은 가능한 모든 수들을 다 찾는 방법이었지만, 백트래킹은 이보다 더 효율적인 방법이라 할 수 있습니다. 백트래킹은 어떤 노드의 유망성을 판단한 뒤, 해당 노드가 유망하지 않다면 다시 부모 노드로 돌아가 다른 자식 노드로 찾아가는 방법입니다. 즉, 조건에 더 맞을 가능성이 있는 경우의 수를 위주로 찾는 방법입니다. 가능성이 없을 경우 직전으로 돌아가 다른 길로 가 찾습니다. 그리고 이 백트래킹에 속하는 여러가지 알고리즘 중 DFS(깊이 우선 탐색) 알고리즘을 이번 문제에서 사용하게 될 것입니다. DFS는 한 루트로 탐색하다가 특정 상황에서 최대한 깊숙히 들어가서 확인한 뒤 다시 돌아가 다른 루트로 탐색..

Algorithm/baekjoon 2021.03.01

[백준 10814] 나이순 정렬 - 자바(java)

이번 문제 역시 간단합니다. 이 문제를 풀기 앞서 "좌표 설정하기" 문제를 보고 오시면 쉽게 풀 수 있습니다. 관련 개념이 밑 링크로 가시면 있습니다. jinijiniblog.tistory.com/47 [백준 11650] 좌표 정렬하기 - 자바 이번 문제는 한 가지 개념만 안다면 간단한 문제입니다. 우선 시간제한이 1초이기 때문에 이 문제를 이중 for문을 사용해 푼다면 시간 초과가 날 것입니다. 그렇다고 Array.sort 메소드는 2차원 배열 jinijiniblog.tistory.com 알고리즘 1. BufferedReader와 split를 사용해 나이와 이름을 각각 입력받아 2차원 배열에 넣습니다. 2. Comparator을 이용해 기준을 세워 정렬합니다. 3. 결과를 출력합니다. 이때, 정렬 기준..

Algorithm/baekjoon 2021.02.28
728x90