알고리즘 문제를 풀다 보면 "가장 마지막에 넣은 데이터를 먼저 빼야 하는" 상황이 자주 발생합니다. (예: 괄호 짝 맞추기, 뒤로 가기 버튼, 최근 숫자 지우기 등)이럴 때 사용하는 자료구조가 바로 스택(Stack), 즉 LIFO(Last In, First Out) 구
사용자가 입력한 데이터나 외부 파일을 읽어올 때, 띄어쓰기가 아주 예쁘게 한 칸씩만 되어있다면 얼마나 좋을까요? 하지만 현실은 그렇지 않습니다.위 문자열처럼 맨 앞에 공백이 있거나, 단어 사이의 띄어쓰기 칸 수가 제멋대로인 문자열을 단순히 split(" ")으로 자르면
split() 뒤에 붙는 숫자의 비밀: limit 파라미터의 3가지 마법블로그 시작에 앞서 split()에 대해 잘 모른다면 위의 블로그를 먼저 보고 오시는거 추천드려요!코딩 테스트에서 문자열을 특정 기호(구분자)로 잘라 배열로 만들어야 하는 문제는 단골로 출제됩니다.
자바에서 문자열을 자를 때 가장 많이 쓰는 메서드는 단연 split()입니다. 보통은 split(",") 처럼 구분자만 넣어서 사용하죠.그런데 다른 사람의 코드를 보다 보면 split(",", 3) 이나 split(",", -1) 처럼 뒤에 정체모를 숫자가 붙어있는 것
자바(Java)로 알고리즘 문제를 풀거나 실무 코드를 작성하다 보면, "두 숫자의 크기 비교하기"와 "배열 안의 숫자 모두 더하기"는 숨 쉬듯 자주 마주치는 패턴입니다.매번 if-else문과 for문을 쓰다 보면 코드가 길어지고 지저분해지기 마련이죠. 오늘은 이 두 가
알고리즘 문제를 풀거나 문자열을 특정 인덱스 단위로 수정해야 할 때, 문자열을 문자 배열(char\[])로 쪼갠 뒤 다시 합치는 작업을 자주 하게 됩니다. 이 과정에서 많은 자바 입문자들이 toString()을 사용했다가 엉뚱한 출력값을 보고 당황하곤 합니다.오늘은 c
자바 8부터 도입된 Stream API를 처음 접하게 되면 가장 먼저 드는 의문이 있습니다."이미 배열(Array)이나 리스트(List)로 데이터를 잘 다루고 있었는데, 왜 굳이 스트림(Stream)이라는 것을 또 써야 할까? 둘 다 여러 개의 데이터를 다루는 것 아닌
자바(Java)로 알고리즘 문제를 풀거나 스트림(Stream) API를 다루다 보면, 컬렉션(List 등)을 원시 타입 배열(int\[])로 변환할 때 .mapToInt(i -> i)라는 코드를 매우 자주 사용하게 됩니다.처음 이 문법을 접하면 "이게 정확히 무슨 뜻이
자바에서 배열(Array)과 리스트(ArrayList)를 다룰 때 자주 마주치는 두 가지 현상이 있습니다. 배열을 출력할 때 발생하는 해시코드 출력 문제와, ArrayList를 배열로 변환할 때 new String\[0]을 인자로 넘기는 이유입니다.오늘은 이 두 가지
알고리즘 문제를 풀다 보면 결과값의 크기를 미리 알 수 없어 동적 배열인 ArrayList에 데이터를 담아두는 경우가 많습니다. 하지만 문제의 반환 타입(Return Type)이 기본형 배열인 int\[]로 고정되어 있다면 타입 불일치 문제가 발생합니다.ArrayLis
자바(Java)로 알고리즘 문제를 풀거나 문자열을 다룰 때, 문자열 안의 글자를 하나씩 꺼내서 확인해야 하는 경우가 정말 많습니다. 아마 자바를 처음 배우셨다면 아래와 같은 코드가 가장 익숙하실 겁니다.기존 방식 (charAt 사용)물론 이 코드도 훌륭하게 작동하지만,
자바(Java)로 알고리즘 문제를 풀거나 실무를 하다 보면, 문자열에 포함된 특정 문자(예: 'w', 'a', 's', 'd')에 따라 변수의 값을 다르게 조작해야 하는 경우가 자주 발생합니다.가장 먼저 떠오르는 방법은 if-else문이겠지만, 상황에 따라 가독성을 높
자바(Java)로 알고리즘 문제를 풀거나 문자열을 다루다 보면, 로직은 완벽한 것 같은데 이상하게 에러가 나거나 결과가 중간에 잘리는 경험을 하곤 합니다. 오늘은 자바 입문자들이 가장 많이 겪는 문자열 처리 관련 3가지 실수와 올바른 해결법을 정리해 보았습니다.토큰의
자바에서 문자열(String)은 정말 자주 사용하지만, 은근히 실수하기 쉬운 부분들이 많습니다. 오늘은 문자열 자르기부터 올바른 초기화 방법, 그리고 메모리를 효율적으로 사용하는 StringBuilder까지 정리해 보겠습니다.문자열의 특정 부분만 잘라내고 싶을 때는 s
먼저 int 배열을 받은 것을 n번째부터 배열 끝까지 출력하기 위해 for문을 사용해서 출력해줬다. 하지만 이 방법보다 더 효율적인 방법이 있다.바로 System.arraycopy (성능 최적화), Arrays.copyOfRange (가독성 최적화) 이다.arr을 설
int\[] answer = {}; : 메모리에 answer라는 이름의 이름표는 붙였지만, 실제 데이터를 담을 공간(Index)이 0개가 된다. 이후 answer\[0] = ...를 선언해주면 0번째 칸에 값을 넣으려고 시도합니다.→ 에러 발생 : 크기가 0이라 값을
문자열 접합(+): String.valueOf(a) + String.valueOf(b)라고 써도 되지만,int ba = Integer.parseInt("" + b + a); 처럼 빈 문자열을 앞에 두면 자바가 알아서 뒤의 숫자들을 문자열로 취급해 붙여준다. (이때 a,
String.trim() : 공백제거String.toLowerCase() : 모두 소문자로 변환String.toUpperCase() : 모두 대문자로 변환public static String solution(String myString) {return myString.
StringTokenizer의 구분자 문자열은 각 문자를 개별적인 구분자로 취급합니다.new StringTokenizer(문자열, ", ")는 문자열 안에서 쉼표를 만나도 자르고, 공백을 만나도 자른다.StringTokenizer는 기본적으로 빈 문자열(비어있는 토큰)
BufferedReader와 Scanner 모두 클래스를 기반으로 만든 '객체(인스턴스)'자바에서는 어떤 기능을 사용하기 위해 new 키워드를 사용하여 메모리에 그 기능을 할당하는데, 이를 객체 생성이라고 한다.BufferedReader br = new Buffered