문자열50 문자열 상수 풀(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/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. [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. [BOJ_16113] 시그널 📌 문제 링크: https://www.acmicpc.net/problem/16113 16113번: 시그널 zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는 www.acmicpc.net ✅ 내 풀이(Success) : 🧐 Review: 최근에 풀었던 문제 중에서 가장 재미있게 풀었던 문제이다. 문자열 문제이지만, 그 문자열을 어떻게 다루는지에 따라서 구현 방향이 달라지고 코드의 양도 꽤 차이나는 문제라고 생각한다. 문제를 풀고 나서 구글에서 파이썬으로 작성된 다른 풀이를 찾아봤지만 나랑 다르게 상당히 많은 반복되는 조건식으로 문제를 푸는 것을 확인했다... 알고리즘 문제 풀이: 파이썬/BOJ 2023. 11. 23. [프로그래머스] 튜플 📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ 내 풀이(Success) : 🧐 Review: 문제 해결의 아이디어를 잡는 것과 그것을 코드로 작성하는 어렵지 않았던 문제였다. 하지만, 내 코드를 코딩테스트 관련 책의 풀이와 비교해보니 부족한 점이 보인다. 더 열심히 해야겠다는 생각이 들었다. 파이팅! 🚩 Idea: 튜플을 어떻게 구하면 될까? 예시를 천천히 읽어보니 a1부터 an으로 갈수록 원소의 집합의 수가 하나씩 증가하.. 알고리즘 문제 풀이: 파이썬/Programmers 2023. 10. 23. [BOJ_1141] 접두사 📌 문제 링크: https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net ✅ 내 풀이(Success) : 🧐 Review: 문제를 풀고 나서 다른 풀이들을 확인해 보니 슬라이싱을 이용한 풀이가 많았다. 해당 내용을 정리해 둔 문서를 다시 읽어봐야겠다. 🚩 Idea: - 중복된 문자열을 확인하는 과정을 줄이기 위해 집합(set)에 문자들을 담아 중복된 문자열을 제거한다. - 위의 처리를 거친 문자.. 알고리즘 문제 풀이: 파이썬/BOJ 2023. 10. 6. [BOJ_13417] 카드 문자열 📌 문제 링크: https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net ✅ 내 풀이(Success) : 🧐 Review: 첫 번째 카드를 뽑을 때는 비교할 카드가 없으므로 덱에 초기값으로 넣어주었고, 두 번째 카드부터 덱에 첫 번째 원소와 비교하여 놓을 위치를 정해주었다. 사전순으로 가장 빠른 문자를 만들기 위해서는 문자열의 앞의 원소들이 최대한 A에 가까운 문자열로 채우는 것이 필요하다. 그래서 덱에 첫 번째 원소와 비교하여 카드를 왼쪽에 추가할지 .. 알고리즘 문제 풀이: 파이썬/BOJ 2023. 9. 27. [BOJ_9081] 단어 맞추기 📌 문제 링크: https://www.acmicpc.net/problem/9081 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net ❌ 내 풀이(Failure) : ✅ 내 풀이(Success) : 🚩 Idea: 문제를 처음 접했을 때 주어진 단어의 모든 순열을 구하고, 사전 순으로 정렬한 뒤에 조건에 따라서 답을 반환하도록 코드를 작성했지만, 시간 초과가 발생하였다. 그래서 시간을 조금 더 줄여보기 위해 빠른 입출력으로 코드를 수정했지만 똑같이 시간 초과가 발생하였다. 조금 더 고민해 봤지만 코드를 .. 알고리즘 문제 풀이: 파이썬/BOJ 2023. 9. 27. 이전 1 2 3 4 5 다음