전체 글326 삽입 정렬(Insertion Sort) 삽입 정렬이란? 삽입 정렬은 두 번째 원소부터 시작하여 그 앞의 원소들과 비교하면서 앞의 원소가 크다면 해당 원소를 뒤로 옮기고, 크지 않다면 해당 위치의 다음 인덱스에 비교를 시작한 원소를 삽입하여 정렬하는 알고리즘입니다. 삽입 정렬의 기본 동작은 다음과 같습니다. 1. 정렬을 시작할 때, 첫 번째 요소는 이미 정렬된 상태로 간주합니다. 2. 두 번째 요소부터 시작하여 삽입하고자 하는 요소를 이전에 정렬된 부분 리스트와 비교합니다. 3. 삽입하고자 하는 원소보다 작은 원소를 만날 때까지 계속해서 비교하며, 작은 원소를 만나면 그 원소의 다음 위치에 비교를 시작한 원소를 삽입합니다. 4. 이 과정을 리스트의 끝까지 반복합니다. 삽입 정렬의 특징 1. stable 정렬: 동일한 값의 원소들 간에는 순서가 .. 프로그래밍 공부/Java 2024. 1. 18. 거품 정렬(Bubble Sort) 거품 정렬이란? 거품 정렬은 간단하면서 기본적인 정렬 알고리즘 중 하나입니다. 이 알고리즘은 인접한 두 원소를 비교하여 순서가 잘못된 경우에 서로 교환하는 방식으로 정렬을 진행합니다. 이러한 교환 작업을 계속해서 반복하면서 가장 큰 원소가 배열의 마지막 위치로 이동하게 됩니다. 이 과정을 배열의 모든 원소가 정렬될 때까지 반복합니다. 거품 정렬은 하나의 원소를 정렬하는 과정에서 많은 교환(swap)과정이 일어날 수 있어서 하나의 원소에 대해 한 번의 교환 과정을 갖는 선택 정렬에 비해 평균적으로 더 많은 시간이 소요됩니다. 거품 정렬의 특징 1. stable 정렬: 동일한 값의 원소들 간에는 순서가 유지되므로 안정 정렬입니다. 2. in-place 정렬: 자료 구조를 그대로 두고 그 안에서 요소들의 위치.. 프로그래밍 공부/Java 2024. 1. 18. 선택 정렬(Selection Sort) 선택 정렬이란? 선택 정렬은 간단하면서도 기본적인 정렬 알고리즘 중 하나입니다. 이 정렬 알고리즘은 한 번의 배열 탐색에서 가장 작은 원소의 위치를 찾아 첫 번째 위치의 원소와 교환하고, 그다음으로 작은 원소를 찾아 두 번째 위치의 원소와 교환하는 과정을 배열의 마지막 원소까지 반복하여 배열을 정렬합니다. 선택 정렬의 특징 1. unstable 정렬: 같은 값을 갖는 원소들의 순서가 정렬 이후 변경될 수 있기에 불안정 정렬입니다. 2. in-place 정렬: 자료 구조를 그대로 두고 그 안에서 요소들의 위치를 바꾸어 정렬합니다. 3. 시간복잡도: 최선, 평균, 최악의 경우 모두 O(N^2)의 시간 복잡도를 갖습니다. 왜냐하면 비교를 해 보기 전에는 어떤 원소가 가장 작은지 모르기 때문에 배열이 최선의 경.. 프로그래밍 공부/Java 2024. 1. 18. 문자열 상수 풀(String Constant Pool)이란? 문자열 상수 풀(String Constant Pool)이란? Java의 String Pool은 문자열 상수 풀이라고도 불리며, JVM이 문자열 리터럴을 관리하는 특별한 영역입니다. 해당 영역은 JVM의 힙 메모리 안의 별도의 공간으로 존재합니다. Stirng Pool의 주요 특징과 동작 방식은 다음과 같습니다. 1. 문자열 리터럴의 재사용 리터럴로 선언된 문자열은 문자열 풀에 저장되며, 이미 동일한 내용의 문자열이 존재하는지 확인합니다. 만약 동일한 내용의 문자열이 없다면 새로운 문자열이 풀에 추가되고, 이미 존재한다면 기존의 문자열을 재사용합니다. 2. 불변성 보장 String 클래스는 불변(immutable)하므로 한 번 생성된 문자열은 변경할 수 없습니다. 이는 문자열 풀에서 중복 검사와 재사용을 .. 프로그래밍 공부/Java 2024. 1. 12. [프로그래머스] 정수를 나선형으로 배치하기 📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ 내 풀이(Success) : 🧐 Review: SWEA에서 완전히 똑같은 문제를 파이썬으로 풀어본 경험이 있어서 해당 문제를 푸는데 큰 어려움을 없었다. 방향벡터와 BFS를 응용하면 문제를 해결할 수 있을 것이다. 유사한 문제: 달팽이 숫자 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId.. 알고리즘 문제 풀이: 자바/Programmers 2024. 1. 6. [프로그래머스] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181872 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ 내 풀이(Success) : 🧐 Review: String 클래스의 lastIndexOf() 메서드는 부분 문자열이 문자열에서 마지막으로 등장을 시작하는 인덱스를 반환한다. 예를 들어, 위 코드에서 출력값은 "dE"가 시작되는 인덱스인 3이 출력된다. 🏷️ Reference: https://docs.oracle.com/en/java/javase/11/docs/api/java... 알고리즘 문제 풀이: 자바/Programmers 2024. 1. 5. [프로그래머스] 그림 확대 📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181836 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ 내 풀이(Success) : 🧐 Review: 파이썬에서는 문자열을 반복할 때 * 연산자를 사용하면 되지만, 자바에서는 String 클래스가 가진 repeat() 메서드를 사용해서 문자열을 반복할 수 있다. Character.toString() 메서드를 사용해서 char 타입을 String 타입으로 변환시킬 수 있다. 알고리즘 문제 풀이: 자바/Programmers 2024. 1. 5. [프로그래머스] 전국 대회 선발 고사 📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181851 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ 내 풀이(Success) : 🚩 Idea: rank와 attendance 배열의 길이가 같기 때문에, 두 배열중 하나의 길이로 for 반복문을 돌리면서 전국 대회에 참여할 수 있는 학생의 랭크와 rank 배열의 인덱스 값을 맵에 저장한다. 반복문이 종료되고, 맵이 가진 키 값을 오름차순으로 정렬해서 등수가 높은 3명의 학생 정보를 찾아 미리 저장해둔 맵에서 인덱스 값을 구해 .. 알고리즘 문제 풀이: 자바/Programmers 2024. 1. 5. [BOJ_9242] 폭탄 해체 📌 문제 링크: https://www.acmicpc.net/problem/9242 9242번: 폭탄 해체 입력으로 폭탄의 코드가 주어진다. 코드는 2자리 이상, 8자리 이하이고, 각 자리는 5행 3열의 문자로 주어진다. 문자는 공백과 별표('*') 중 하나이다. 또, 각 숫자를 구분하기 위해 숫자 사이에는 www.acmicpc.net ✅ 내 풀이(Success) : 🧐 Review: 문자열 파싱 문제는 역시 파이썬이 최고다. 어려운 문제는 아니라고 생각하지만, 자바로 다시 풀려고 하면 꽤 귀찮을 것 같은 문제다. 🚩 Idea: 0부터 9까지의 수를 어떻게 파싱해서 비교할 것인지에 따라서 문제의 해결 방향이 달라진다. 나는 문자열 코드를 위에서 아래 방향으로 봤을 때 라인을 3개씩 읽어서 딕셔너리에 저장된.. 알고리즘 문제 풀이: 파이썬/BOJ 2023. 12. 29. [BOJ_19948] 음유시인 영재 📌 문제 링크: https://www.acmicpc.net/problem/19948 19948번: 음유시인 영재 감수성이 뛰어난 음유시인 영재는 일상생활 중에 번뜩 시상이 떠오르곤 한다. 하지만 기억력이 좋지 못한 영재는 시상이 떠오르면 그 순간 컴퓨터로 기록해야만 안 까먹는다! 시는 대문자, 소 www.acmicpc.net ✅ 내 풀이(Success) : 🧐 Review: 간단한 문자열 문제였다. 시의 제목과 내용을 출력할 수 있는지 확인하는 부분에서 일부 코드의 중복이 발생하는데 함수를 이용해서 하나의 함수를 통해 공통으로 체크하는 로직을 사용했다면 약 10줄 정도는 더 짧은 코드로 문제를 해결했을 것 같다. 이 문제를 풀면서 문자열에서 각 단어의 첫 글자를 추출하여 이어 붙인 새로운 문자열을 생성할.. 알고리즘 문제 풀이: 파이썬/BOJ 2023. 12. 19. 이전 1 2 3 4 ··· 33 다음