전체 글 221

백준 1254번 - 팰린드롬 만들기

나의 풀이. 처음에 접근했을 때 단순하게 문자열 마지막 앞부터 역으로 추가하면서 리버스 한 값이 맞으면 응 팰린드롬이야 라고 생각해서 어찌어찌 코드짜서 예제 3번까지는 성공했으나 마지막 예제 4번에서 거의 두배보다 안되는 수가 계속 나오면서 아 틀린거구나 했다. 도저히 생각이 안나서 다른 분 풀이를 참고 했고 이해하니 충분히 풀 수 있었을텐데 하는 아쉬움은 사실 크게 안들었고 아직 멀었구나 하는 생각은 많이 들었다. 예제 2번을 예로 보면 입력된 문자열 "qwerty" 을 보면 qwerty, 0번째 인덱스부터 문자열 끝까지 -> 팰린드롬인지 아닌지 확인 werty, 1번째 인덱스부터 문자열 끝까지 -> 팰린드롬인지 아닌지 확인 erty, 2번째 인덱스부터 문자열 끝까지 -> 팰린드롬인지 아닌지 확인 끝까..

CODING TEST 2023.05.29

230528 STUDY LOG.

목표. 알고리즘 강의 듣기 비선형 자료구조 - 이진탐색트리 재수강 정리 프리 코딩테스트 2-5 응시 프로그래머스 Lv0. 풀기 진행 및 완료. - 알고리즘 강의 듣기 알고리즘 - 백트래킹 TRUE 알고리즘 - 백트래킹 문제 풀이 TRUE 알고리즘 - 다익스트라 TRUE 알고리즘 - 다익스트라 문제 풀이 TRUE - 비선형 자료구조 : 이진트리 재수강 및 정리 비선형 자료구조 - 이진 탐색 트리 (Binary Search Tree) 정의 및 탐색, 삽입, 삭제 구현 - 프리 코딩테스트 2-5 응시 - 프로그래머스 Lv0. 풀기 후기. 자료구조의 후반부 이해도가 낮아 스택으로 했다가 큐로 했다가 우선순위 큐로 했다가 테스트 케이스를 통과 못하는게 어떤 이유인지 궁금하고 또 어렵다. 정리하는데 너무 시간이 오..

STUDY LOG 2023.05.29

비선형 자료구조 - 이진 탐색 트리 (Binary Search Tree) 정의 및 탐색, 삽입, 삭제 구현

시작하며. 앞서 트리가 무엇인지 이진 트리는 무엇인지 이진 트리의 성격에 따라 포화 이진 트리, 완전 이진 트리, 정 이진 트리, 편향 이진 트리 등등 어떤 종류가 있는지 그리고 어떻게 순회할 수 있는지 등을 알아봤습니다. 오늘은 이진 트리의 종류 중 하나인 이진 탐색 트리에 알아보며 데이터를 삽입하고 삭제하는 방법도 정리하고자 합니다. 이진 탐색 트리(Binary Search Tree, BST)를 알아야 하는 이유 탐색 효율성: 이진 탐색 트리는 데이터를 효율적으로 탐색할 수 있는 구조입니다. 각 노드는 특정한 값을 가지고 있으며, 왼쪽 서브트리에는 작은 값의 노드가, 오른쪽 서브트리에는 큰 값의 노드가 위치합니다. 이를 통해 탐색 시 비교를 통해 탐색 범위를 반씩 줄여나가므로, 탐색 속도가 빠릅니다...

230527 STUDY LOG.

목표. 프리 코딩테스트 2-4 응시 비선형 자료구조 - 이진트리 정리 및 복습 자바 기본 클래스 정리 프로그래머스 Lv.0 부터 풀기 진행 및 현황. - 프리 코테 2-4 응시완료 - 비선형 자료구조 : 이진트리 정리 및 복습 비선형 자료구조 - 이진 트리(Binary Tree) 구현과 순회 - 자바 기본 클래스 정리 자바 클래스 - Object 클래스 자바 클래스 - String 클래스 - 프로그래머스 Lv.0 부터 최신순으로 풀기 오늘 후기. 코딩 테스트 보면서 역시나 이렇게 풀면 안될거같은데 하면서도 자꾸 그렇게 풀게된다. 막상 문제를 마주하면 어떤 유형의 문제인지 감은 안오고 빨리 풀어내려고 하는거 같아 마음이 씁쓸 이해도가 부족해서 그런거 같으니 진도 나가면서 자꾸 반복하는 수 밖엔 없겠다. 문..

STUDY LOG 2023.05.27

자바 클래스 - String 클래스

시작하며. 자바 기본 클래스 중에서도 자주 사용하는 String 클래스에 대한 이해를 높여보자. String을 선언하는 두가지 방법. String은 자바에서 문자열을 사용하기 위한 클래스이다. 아주 많이 활용하기때문에 생성 할때도 어떤 차이가 있는지 알아보자. String loopy = new String("loopyString"); // String 클래스의 생성자 매개변수로 생성 String loopy1 = "loopy"; // 문자열 상수를 가리키는 방식으로 생성 String loopy2 = "loopy"; // 문자열 상수를 가리키는 방식으로 생성 new 예약어로 사용해 객체를 생성하는 경우 "loopyString" 문자열을 위한 메모리가 할당 되고 새로운 객체가 생성 두번째, 세번째 줄 처럼 생..

BACKEND/JAVA 2023.05.27

자바 클래스 - Object 클래스

시작하며. JDK는 Java Development Kit의 약자로, Java 프로그래밍을 위한 개발 도구들의 집합을 말합니다. JDK는 Java 언어로 작성된 애플리케이션, 애플릿, 라이브러리 등을 개발하고 실행하기 위해 필요한 도구들을 제공. 이런 JDK에서 제공하는 많은 클래스를 활용하면 프로그램을 효율적으로 구현할 수 있다. 다 외울 필요는 없고 찾아보며 쓰면 되지만 기본적인 내용은 알고 넘어가기 위해 정리하고자 한다. java.lang 패키지. java.lang 패키지는 Java에서 가장 기본적이고 핵심적인 클래스들을 포함하는 패키지이다. 이 패키지는 자동으로 컴파일할 때 import되기 때문에 별도의 import 문을 추가하지 않아도 사용할 수 있다. 그렇기 때문에 직접 import하지 않아도 ..

BACKEND/JAVA 2023.05.27

비선형 자료구조 - 이진 트리(Binary Tree) 구현과 순회

이진 트리 구현. 배열 : 레벨 순회 순으로 배열에 구성 연결 리스트 : 값과 간선을 관리하기 위한 연결리스트 구성 이진 트리의 순회(Traversal). 모든 노드를 빠뜨리거나 중복하지 않고 방문하는 연산 전위/중위/후위 순회, 레벨순회로 분류할 수 있다. 전위 순회(preorder traversal) 순서 : 부모 노드 → 왼쪽 서브트리 → 오른쪽 서브트리 순서로 노드를 방문 경로 : A → B → D → H → I → E → J → C → F → G 1. 현재 노드 A 출력 → A의 왼쪽 노드 B 출력 → B의 왼쪽 노드 D 출력 → D의 왼쪽 노드 H 출력 (하위 노드 없음) 2. D의 오른쪽 노드 I 출력 → B의 오른쪽 노드 E 출력 -> E의 왼쪽 노트 J 출력 (하위 노드 없음) 3. A의..

230526 STUDY LOG.

목표. 알고리즘 강의 수강 sorting & greedy 복습 및 문제 풀기 비선형 자료구조 - 트리 복습 및 정리 프리 코딩테스트 2-4 응시 금요일 라이브 세션 참여 진행 및 완료. - 알고리즘 강의 듣기 알고리즘 - 분할과 정복 TRUE 알고리즘 - 분할과 정복 문제 풀이 TRUE 알고리즘 - 다이나믹 프로그래밍 TRUE 알고리즘 - 다이나밍 프로그래밍 문제 풀이 TRUE - sorting & greedy 관련 문제 풀기 자바 오름차순/내림차순 정렬하기 - Arrays.sort() 함수 프로그래머스 - 전국 대회 선발 고사 프로그래머스 - 덧칠하기 - 트리 복습 및 정리 비선형 자료구조 - 이진 트리(Binary Tree)란 무엇이고 여러 가지 종류를 알아보자 - 금요일 라이브 세션 참여 - 프리 ..

STUDY LOG 2023.05.27

비선형 자료구조 - 이진 트리(Binary Tree)란 무엇이고 여러 가지 종류를 알아보자

시작하며. 지난 글에서 트리 자료구조는 어떤 것인지 왜 이진 트리가 중요한지 등 정리했었다. 이진 트리는 성격에 따라 여러 가지 종류로 분류되며 오늘은 이진 트리란 무엇이고 종류와 특징에 대해서 알아보고자 한다. 이진 트리(Binary Tree). 각 노드는 최대 2개의 자식을 가질 수 있는 트리 자식 노드는 좌우를 구분하여 값을 저장 (왼쪽 자식 : 부모 노드의 왼쪽 / 오른쪽 자식 : 부모 노드의 오른쪽 아래) 이진 트리의 서브 트리는 공백이 될 수도 있고 하나의 서브트리만 가지거나 두 개 모두 가질 수도 있다. 이진 트리의 종류. Perfect binary Tree : 포화 이진 트리 - 모든 레벨의 노드들이 2개씩 다 채워져 있는 트리 - 모든 리프 노드가 같은 레벨에 있어야 함 Complete ..

프로그래머스 - 덧칠하기

나의 풀이. 한 번에 칠할 수 있는 길이는 m이고 다시 칠하기로 한 구역은 적어도 한 번은 페인트칠을 해야하니까 section 배열 안의 요소들이 한번씩만 칠해지는 최소 횟수를 구하면 된다. 어렵다.. section 배열은 오름차순으로 되어 있어 0번째 인덱스의 값이 첫 시작 위치가 되면 된다. 예제 1번을 예로 들면 2부터 한번에 칠할 수 있는 끝인 5가 되어야 하기때문에 end 인덱스를 section[0] + m(칠할 수 있는 길이) 하면 6에서 -1 해야 원하는 길이가 된다. 그럼 다음 section배열 요소에서 5를 넘지 않으면 다시 칠할 필요가 없기 때문에 다음 요소로 넘어간다. section[1]의 값은 3으로 이미 칠해진 범위기 때문에 넘어간다. 다음 section[2]의 경우 6으로 칠해진..

CODING TEST 2023.05.26