no image
int[][] vs List<List<Integer>>
백준 ABCDE 문제 풀다가 몰랐던 사실을... 진짜 몰랐다.. 바보인가 공부 제대로 해야지... 그래서 둘의 차이점이 궁금해서 끄적끄적 적어본다.. 🔹 int[][](배열 기반)고정 크기의 2차원 배열 구조로, 메모리를 선언 시점에 미리 모두 할당인접 행렬 표현에 적합하며, 두 정점 간의 연결 여부를 빠르게 확인하지만 인접 리스트처럼 연결된 정점만을 저장하는 데는 비효율적이며, 공간 낭비가 발생 🔹 List>(리스트 기반)가변 크기의 리스트 안에 또 다른 리스트를 포함한 구조로, 필요한 만큼 메모리를 동적으로 확장인접 행렬 표현은 다소 불편하지만, 인접 리스트 표현에는 최적화되어 있어 연결된 정점만 효율적으로 관리일반적으로 그래프 문제에서 공간·시간 효율이 뛰어나 많이 사용 시간복잡도 & 공간복잡도..
2025.05.13
no image
자바의 Record? 그게 뭐야?
저는 항상 DTO(Data Transfer Object)를 사용하여 데이터를 전달하는 구조를 채택해 왔습니다. 그러나 이번 앱 프로젝트를 진행하면서,  같은 팀원분이 Record를 사용하여 개발하는 모습을 보고, 저도 처음으로 DTO가 아닌 Record를 활용하여 개발을 시도하게 되었습니다.  그렇다면 Record? 그게 뭐여 ? 🤔  그 전에 앞서서 우리는 DTO에 대해서 알아야합니다.  그럼 DTO란? 데이터 전송 객체로 우리는 Java 애플리케이션의 다양한 계층 또는 서비스 간에 데이터를 전송하는데 이를 위해 DTO를 많이 사용합니다. DTO는 복잡한 동작이나 로직 없이 데이터를 담기 위한 간단한 객체입니다. 이 객체의 역활은 데이터를 묶어서 필요한 곳에 전달을 하는 방식으로 사용합니다.  그런데..
2025.01.08
no image
Java 변수의 초기값
가끔 코딩테스트를 하다보면 자바 변수에 초기값을 설정해줘야 하는데 설정을 안 해주는 실수를 한다.어떤 변수에 초기화를 해줘야하는지 헷갈리고 개념도 잘 모르는거 같아서 기초를 확실하게 잡고 가게 글을 작성..!  로컬 변수의 초기화로컬 변수(local variable)는 명시적으로 초기화하지 않으면 사용할 수 없습니다. 컴파일러가 자동으로 값을 초기화하지 않기 때문이라고 합니다.  int result를 초기화하지 않고 사용하려고 하면 컴파일 오류가 발생합니다.public class Main { public static void main(String[] args) { int result; // 초기화하지 않음 System.out.println(result); // 컴파일 오류:..
2024.11.18
no image
String / StringBuffer / StringBuilder 차이
자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 3가지가 있습니다. 위 3가지 클래스 자료형은 모두 문자열을 다루는데 있어 공통적으로 사용되지만, 사용 목적에 따라 쓰임새가 많이 달라지게 됩니다. 오늘은 이 3가지의 차이와 어느 상황에서 어느 자료형을 사용하는 것이 이상적이고 성능적으로 어느것이 더 좋은지 글을 작성해 봤습니다.   String 과 SringBuffer & StringBuilderString은 불변입니다. 기본적으로 객체 값을 변경할 수 없습니다.  이는 한번 할당된 공간이 변하지 않는다고 해서 불변 자료형이라고 부릅니다. 그래서 초기공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 되는 특징이 있습니다.  실제로 String 객체의 내부 구성 요소를 보면 다음과 같습니다..
2024.11.13
no image
아니 인터페이스는 뭐고.. 추상클래스는 뭐야!?
오늘의 주제는 제가 면접에서 나왔던 질문입니다...!  면접자 🧑🏼‍💻 : 추상클래스와 인터페이스는 차이가 뭔가요?나 🐥 : (둘이 다르긴..다른데.. 정확히 뭐라고 말해야 하지?)정말 저 사진처럼 대답을 못하고 나왔습니다... 바보같이... 이런 실무적인 질문이 들어오면 시원하게 대답하기가 생각보다 힘듭니다. 우리는 추상클래스와 인터페이스에 대해서 알고 있냐고 누가 물어본다면 알고 있다고 대답을 하고있습니다. 그런데 이론적인 내용 말고 정작 "왜 사용하나요?", "차이점이 뭔가요?", "추상클래스를 사용할지 인터페이스를 사용할지 어떻게 정하나요?"  오늘 이 글은 읽고 다시한번 기본을 잡는다는 마인드로 한번 글을 써보겠습니다. 추상클래스란?추상클래스는 일반 클래스와 별 다를 것이 없습니다. 단지..
2024.11.06
no image
[JAVA] 실무에서 가장 많이 쓰이는 자바 문법
IDE ?IDE : 통합개발환경, 코딩을 비롯해 개발에 필요한 각종 작업을 도와주는 소프트웨어를 말함 기능으로는 다음과 같다.소스 코드 편집기빌드 자동화디버거 소스코드 편집기 : 코드를 직접 작성하고 편집할 수 있는 기능과 문법적으로 올바른 코드인지를 검사하여 사용자에게 보여 주는 기능을 포함. 자동완성 또한 코드 작성을 도와주는 것으로 편집기 기능빌드 : 소스코드 편집기로 작성된 코드를 컴퓨터가 실행할 수 있는 바이너리 코드 형태로 변환  하는 것읋 의미 함으로 여기서 테스트 코드를 실행하여 코드가 올바르게 수정되었는지 체크하는 기능도 포함빌드 자동화 : 이 과정들을 자동화해 주는 것으로 버튼 하나만 클릭하면 모든 테스트 코드를 실행하며 성공하면 빌드를 해줌디버거 : 소스코드의 어떤 부분에 문제가 발생..
2024.06.12
no image
[JAVA] Java String reverse(문자열 뒤집기)
오늘 자바에서 단어 뒤집기 문제를 풀어서 이와 관련해서 문자열을 뒤집을 수 있는 방법을 복습하고자 작성! 문자열 뒤집기 'abc' -> 'cba' StringBulider, StringBuffer를 이용하는 방법reverse( ) 메소드를 제공하는 StringBuilder/StringBuffer 클래스 이용public class reverse { public static void main(String[] args) { String word = "abc"; StringBuffer sb = new StringBuffer(word); String Str_reversed = sb.reverse().toString(); System.out...
2024.06.05