나를 기록하다
article thumbnail
[TIL-14 / 230702] 알고리즘 - 카운팅 정렬(Counting Sort)
TIL 2023. 7. 2. 23:26

알고리즘을 공부하면서 많은 정렬들이 등장한다. 버블 정렬, 삽입 정렬 등등... 오늘 공부한 내용은 이렇게 수많은 정렬 알고리즘 중 시간 복잡도가 O(n)으로 엄청난 성능을 보여주는 알고리즘이다. 카운팅 정렬을 공부하면서 처음에는 이게 왜 빠를까?를 생각했다. 시간 복잡도를 공부할 때, 시간 복잡도 도출 기준은 상수의 시간 복잡도는 계산에서 제외하고, 가장 많이 중첩된 반복문의 수행 횟수가 시간 복잡도의 기준이 된다고 배웠다. 카운팅 정렬은 각 배열 원소끼리(예를 들어 for문 중첩) 직접 비교하지 않고, 인덱스를 가지고 위치를 찾아나가는 것이다. 이 방법의 가장 큰 장점은 매우 빠르다는 것이다. 하지만 카운팅 정렬은 수의 범위가 매우 클 경우(예를 들어 10억, 100억 등등...) 심한 메모리 낭비를..

article thumbnail
[TIL-13 / 230701] 알고리즘 - 디버깅
TIL 2023. 7. 1. 22:08

1. 디버깅은 왜 중요할까? 1) 디버깅의 중요성 코딩 테스트에서 떨어졌을 때의 유형 학생1) index 범위 1개 차이로 떨어졌어!! 학생2) 계속 답이 나오지 않아 몇 시간 동안 헤맸는데, 알고보니 int를 long으로만 바꾸면 되는거였어!! → 디버깅을 제대로 했다면 아마 코딩 테스트에 통과했을 것! 디버깅은 코딩 테스트에 필요한 기술이고, 그냥 알아두기만 하면 되는 것이 아니라 문제를 풀면서 반드시 해야 하는 과정이다. 반드시 디버깅을 익힌 후에 코딩 테스트에 응시하라! 2) 디버깅하는 법 방법 코드에서 디버깅하고자 하는 줄에 중단점(break point)을 설정하고, IDE의 디버깅 기능을 실행해 진행하면 된다. 구체적인 방법은 다음과 같다. 코드에서 디버깅하고자 하는 줄에 중단점을 설정. 이때..

article thumbnail
[백준 4153 자바/Java] 직각삼각형
Algorithm/baekjoon 2023. 5. 25. 23:34

문제 설명 직각삼각형이 되기 위한 조건은 주어진 세 변의 길이가 각각 x, y, z이고, 가장 큰 변의 길이를 x라고 했을 때, x^2 = y^2 + z^2(피타고라스 공식)이 성립하는 것이다. Scanner 대신 효율적인 방법을 풀어보기 위해 BufferedReader와 StringBuilder를 활용하였다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReade..

article thumbnail
[백준 1085 자바/Java] 직사각형에서 탈출
Algorithm/baekjoon 2023. 5. 25. 22:21

자바로 알고리즘 언어 변경.. 아직 파이썬, 자바 어느 하나 완벽히 못하기에, 파이썬과 자바 둘 다 하기보단 자바 하나를 확실하게 하자는 마음가짐으로 알고리즘 공부를 자바로 변경하였다. 그래서 브론즈 문제도 근근히 푸는 나이지만 다시 열심히 공부하겠다. 코드 코드는 전체 코드말고 부분씩 나누어서 살펴보겠다. BufferedReader, InputStreamReader import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throw..

article thumbnail
[백준 2920 자바/Java] 음계
Algorithm/baekjoon 2023. 5. 23. 22:36

코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Scanner 객체 생성 int[] inputs = new int[8]; // 크기가 8인 정수형 배열 생성 for (int i = 0; i < inputs.length; i++) { // inputs 배열에 값 입력 inputs[i] = sc.nextInt(); // 사용자로부터 정수 입력 받음 } sc.close(); // Scanner 객체 닫기 String output = ""; // 출력 결과를 저장할 문자열 변수 초기화 for (int i = 0; i < input..

article thumbnail
[백준 2338 자바/Java] 긴자리 계산
Algorithm 2023. 5. 23. 22:09

코드 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // A에 대한 BigInteger 입력 받기 BigInteger A = in.nextBigInteger(); // B에 대한 BigInteger 입력 받기 BigInteger B = in.nextBigInteger(); // A와 B의 합 출력 System.out.println(A.add(B)); // A에서 B를 뺀 값 출력 System.out.println(A.subtract(B)); // A와 B의 곱 출력 System.o..

profile on loading

Loading...