목록전체 글 (269)
Coding Planet
Spring의 의존성과 Maven을 공부하면서 플러그인이라는 단어가 자주 등장했다. Plugin이라는 단어에서 전기 플러그를 연결하듯 무엇인가를 더한다는 의미인것은 유추할 수 있었다. 심지어 내가 지금 블로그를 작성하는 티스토리에서 플러그인이 아래 이미지와 같이 등장한 이상 더 이상 이에 대한 공부를 미룰 수가 없기에 공부를 했다. 1. 플러그인(Plugin) 프로그램이나 소프트웨어에 추가 기능을 제공하기 위해 확장 모듈로서 동작하는 소프트웨어 구성 요소 플러그인은 원래의 소프트웨어에 연결되어 특정 작업을 수행하거나 기능을 확장하도록 설계되어 있다. 즉, 내가 사용하고 있는 프로그램에 어떠한 기능을 더하는 기능을 의미한다. 예를 들어, 자바 프로젝트의 빌드와 종속성 관리, 프로젝트 관리를 해주는 Mave..
1. Maven이란? Maven은 자바 기반 프로젝트의 빌드, 종속성 관리 및 프로젝트 관리를 위한 도구이다. Apache 소프트웨어 재단에 의해 개발되었으며, 널리 사용되는 빌드 도구 중 하나이다. Maven을 사용하면 프로젝트의 빌드 프로세스를 자동화할 수 있다. Maven은 프로젝트의 구조를 정의하는 프로젝트 객체 모델(Project Object Model, POM)을 사용한다. POM은 프로젝트의 종속성, 빌드 설정, 플러그인 등을 정의하는 XML 파일이다. Maven은 POM 파일을 기반으로 프로젝트를 빌드하고 필요한 종속성을 자동으로 다운로드하여 관리한다. 2. Maven 사용하여 POM.XML에 DI 추가하기 Maven은 중앙저장소(Central Repository, 위 사진의 사이트)에서 ..
1. 문제 요구사항 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 2. 내 풀이 - Character.isDigit() 앞서 알파벳을 찾아내는 메서드 Character.isAlphabet()을 사용한 적이 있다. 이번에는 파라미터로 주어지는 문자가 숫자인지 판독하는 메서드 Character.isDigit()를 사용했다. 이 때 str 문자열을 돌면서 charAt()으로 해당 문자가 숫자인지 판독하게된다. 문제에서 "자연수"를 반환하라고 했으므로 0으로 시작할 경우 0을 없애야한다. 따라서 문자열로 만들고 int형으로 바꿔서 가장 앞에..
1. 문제 요구사항 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 2. 내 풀이 - replaceAll(), reverse() 숫자, 특수문자 등이 섞인 문자열에서 알파벳만 추출하기 위해서는 replaceAll()을 사용한다. 이때 알파벳 이외의 것들을 " " (공백문자)로 바꿔준다. 회문 비교는 이전 포스트의 reverse()를 사용했다. import java.util.Scanner; public class PalindromeChecker { public String solution(String str) { //1. 정규식을 이용하여 알파벳을 추출하고 대문자..
1. 문제 요구사항 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 2. 내 풀이 이전 문제인 단어 뒤집기에서 사용했던 로직을 그대로 사용해서 풀 수 있었다. 다만 if문을 만들 때 '같은경우'와 '다른 경우' 어떤 것이 기준이 되어야하는가 고민하면서 헤맸다. 사실 바꾼다고 크게 다른건아니지만 어떤 변수를 증가 및 감소시키는게 뒤로 가는게 깔끔하 import java.util.Scanner; public class Palindrome { public String solution(String str) {..
1. Thread(스레드)란? 프로그램이란 일종의 명령어 집합으로, 우리가 컴퓨터에 명령을 내리면 그 명령을 수행하는 것이다. 이 명령어를 수행하는 동안에는 일종의 실행 흐름이 존재하는데, 이 실행 흐름을 스레드(Thread)라고 한다. 스레드는 독립적인 실행 흐름이며, 하나의 프로그램 내에서 여러 개의 스레드가 동시에 실행될 수 있다. 이러한 스레드는 프로세스(Process)의 일부로 실행되며, 해당 프로세스의 자원을 공유한다. 이렇게 스레드를 사용하면 여러 작업을 동시에 수행할 수 있어서 시스템의 성능을 향상시키는 등 여러 가지 이점을 얻을 수 있다. 다만 스레드를 사용하는 경우에는 하나의 스레드가 다른 스레드에 영향을 끼치지 않도록 동기화(Synchronization)를 해야 한다. 이러한 동기화는..
동기화는 멀티스레드 환경에서 공유 데이터에 접근할 때 발생하는 문제를 해결하기 위한 메커니즘 멀티스레드 환경에서 하나의 자원에 여러 스레드가 동시에 접근하면 데이터의 불일치성, 일관성이 깨지거나 충돌이 발생할 수 있다. 이러한 문제를 방지하기 위해 스레드 간의 작업을 조율하는 것이 동기화 동기화는 하나의 스레드가 작업을 수행하고 있는 동안 다른 스레드가 해당 작업에 접근하지 못하도록 막아준다. 이를 통해 공유 데이터의 일관성을 유지하고 데이터의 무결성을 보장 따라서 어떠한 메서드나 자료형을 쓸 때 해당 자료형이 동기화를 지원하는지를 고려해야한다. 예를들어 HashSet은 동기화되어있지 않아 멀티스레드 환경에서 안전하게 사용하기 위해서는 동기화 처리를 해주어야한다.
1. HashSet이란? HashSet은 Java 컬렉션 프레임워크의 하나로, 중복을 허용하지 않는 데이터 집합을 구현하는 데 사용됩니다. HashSet은 내부적으로 HashMap 인스턴스를 사용하여 데이터를 저장하며, 데이터 삽입, 삭제, 조회 작업을 빠르게 수행할 수 있습니다. HashSet은 데이터의 순서를 보장하지 않습니다. 즉, HashSet에 데이터를 삽입한 순서와 HashSet의 내부 데이터 저장 순서는 다를 수 있습니다. 이러한 이유로 HashSet은 데이터 순서가 중요하지 않은 경우에 사용됩니다. HashSet은 Set 인터페이스를 구현하므로, Set 인터페이스에서 정의된 모든 메서드를 사용할 수 있습니다. 또한, HashSet은 null 값을 저장할 수 있습니다. 하지만, HashSet..
1. 문제 요구사항 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다. 2. 문제풀이 indexOf()는 해당 문자가 가장 처음 발견되는 인덱스를 반환하는 메서드이다. str.CharAt()은 파라미터로 들어간 숫자의 인덱스에 현재 무슨 문자가 있는지 반환하는 메서드이다. 중복문자를 제거하는 가장 중요한 논리는 해당 문자가 처음 등장하는 인덱스 번호와 현재 해당 문자가 존재하는 인덱스가 같으면 그 문자는 중복되지 않는 문자인 것이다. 예를 들어, 반복문에서 good이라는 문자를 순회한다면 index[0]의 문자(str.charAt(i))는 'g'이다. 또한 g의 가 처음 등장하는 인덱스(str.i..
1. 문제 요구사항 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요. 2-1. 나의 문제풀이 이 문제를 풀기위해서는 주어진 문자열의 문자가 영어 알파벳인지 특수문자인를 먼저 구분해야 한다. ASCII 코드를 통해 구분할 수 있다. package algorithm01; import java.util.ArrayList; import java.util.Scanner; public class SpecificReverse { public String solution(String str) { //ArrayList 사용하는 이유 : 요소의 자료형이 달라서 String answer =""; //ASCII 코드로 ..