목록전체 글 (269)
Coding Planet
| 재귀함수란 재귀 함수는 자기 자신을 다시 호출하는 함수를 의미한다. 이러한 함수는 문제를 더 작은 하위 문제로 분해하여 문제를 해결하는 데 사용된다. 재귀 함수는 종료 조건이나 베이스 케이스(Base Case)를 가지고 있어야 한다. 그렇지 않으면 함수는 무한히 자신을 호출하게 되어 스택 오버플로우 오류가 발생한게 된다. 일반 반복문을 통해 구현 가능한 기능은 재귀 함수를 통해 구현이 가능하며 반대로 재귀함수로 구현 한 기능을 반복문으로 구현 가능하다. 베이스 케이스(Base Case) : 재귀 함수에서 재귀 호출 없이 직접 결과를 반환하는 조건 즉, 더 이상 분해되지 않는 가장 기본적인 문제 | 재귀함수 예시 아래는 팩토리얼 함수이다. n!=n×(n−1)! 팩토리얼 함수는 정수 n의 팩토리얼 값을 ..
자바의 람다식(Lambda Expressions)은 Java 8부터 도입된 기능으로, 간결하게 함수를 표현할 수 있게 해준다. 람다식이란 말그래도 메서드를 하나의 식(expression)으로 표현한 것이다. 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 람다식을 익명함수라고도 한다. | 기본구조 파라미터 : 메서드의 파라미터와 동일하며 괄호 '()'안에 선언한다. 파라미터의 타입을 명시할 수도 있고 생략할 수도 있다. 화살표 : 파라미터와 본문을 구분하는 역할을 한다. expression_body : 해당 함수가 수행할 로직을 담고 있다. 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통 사이에 ->를 추가한 것이다. (parameters) -> expression_body | 람다식..
기초 중의 기초인데 최근 프로그래머스 풀면서 여전히 이것때문에 컴파일 오류가 발생했다;; 다시 정리한다... 1. length (프로퍼티) length는 배열의 길이(크기)를 나타내는 프로퍼티 모든 배열에 대해 사용 가능하며, 배열의 크기를 반환한다. int[] arr = {1, 2, 3, 4, 5}; int size = arr.length; // size는 5 2. length() (메서드) length()는 String 클래스의 메서드로, 문자열의 길이를 반환 문자열의 길이는 해당 문자열에 포함된 문자의 수를 의미한다. String str = "hello"; int len = str.length(); // len는 5
✨ 문제 💻코드 1. 런타임 에러난 코드 class Solution { public int solution(String t, String p) { int answer = 0; int pLength = p.length(); int pValue = Integer.parseInt(p); for(int i = 0; i
✨ 문제 💻코드 class Solution { public String solution(int[] food) { StringBuilder sb = new StringBuilder(); for (int i = 1; i < food.length; i++) { sb.append(Integer.toString(i).repeat(food[i] / 2)); } return sb.toString() + "0" + sb.reverse().toString(); } } 👩💻 풀이 방법 0은 물을 의미하므로 for문은 1부터 시작한다. '.repeat(food[i]/2)' : repeat(n) 메서드는 문자열을 지정된 횟수만큼 반복한다. 여기서는 각 음식의 개수의 절반만큼 반복하여 문자열을 생성한다. 문자열을 조립하여 최..
`String`, `StringBuffer`, `StringBuilder`는 모두 Java에서 문자열을 처리하기 위한 클래스이다. 각 클래스의 특징과 차이점에 대해 공부했다. | String 불변성 (Immutability): String 클래스의 가장 큰 특징은 한 번 생성된 String 객체는 불변이다. 즉, String에 어떤 변화를 주려고 새로운 String 객체가 생성된다. 이러한 불변성은 특정 상황에서는 안정성을 제공하지만, 문자열 조작 작업이 빈번하게 일어날 때는 성능 문제가 발생할 수 있다. 예시: 문자열 연결 (+ 연산자 사용)을 할 때마다 새로운 String 객체가 생성된다. | StringBuffer 가변성 (Mutability): StringBuffer는 문자열을 변경하거나 조작할 ..
✨ 문제 💻코드 class Solution { public int[] solution(long n) { String str=Long.toString(n); int[] answer = new int[str.length()]; int index = 0; while(n>0){ answer[index++] = (int)(n%10); n/=10; } return answer; } } 👩💻 풀이 방법 숫자를 문자열로 변환한하고 문자열 길이로 반환할 배열을 초기화한다. answer[index++] = (int)(n % 10); n의 나머지(마지막 자리수)를 배열에 저장한다. 이 때 마지막 나머지가 반환될 숫자배열의 가장 처음으로 자리잡으므로 자릴수를 뒤집어 배열에 저장되는 로직이다. n을 10으로 나눠서 다음 자리..
✨ 문제 💻코드 class Solution { public int solution(int[] number) { int answer = 0; for(int i = 0; i < number.length - 2; i++) { // 마지막에서 두 번째 원소까지만 반복 for(int j = i + 1; j < number.length - 1; j++) { // i 다음 원소부터 마지막에서 첫 번째 원소까지만 반복 for(int k = j + 1; k < number.length; k++) { // j 다음 원소부터 마지막 원소까지 반복 if(number[i] + number[j] + number[k] == 0) { answer++; } } } } return answer; } 👩💻 풀이 방법 삼총사를 만들기 위..
✨ 문제 https://school.programmers.co.kr/learn/courses/30/lessons/150370# 💻코드 import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.ArrayList; class Solution { public int[] solution(String today, String[] terms, String[] privacies) { //1. 약관의 유효기간을 매핑한다. // - termMap : ["A", "6"] Map termMap = new HashMap(); for(String term : terms){ String [] parts = term.split(" ..
| Wrapper 클래스란? Java에서는 기본 데이터 타입(primitive data types)과 그에 해당하는 래퍼(Wrapper) 클래스를 제공한다. 래퍼 클래스는 기본 데이터 타입의 값을 객체로 감싸는 역할을 한다. 이를 통해 기본 데이터 타입 값에 대한 객체 연산을 수행할 수 있다. 또한 제너릭과 같은 기능에서 기본 데이터 타입을 직접 사용할 수 없을 때 래퍼 클래스를 사용하여 해결할 수 있다. | 주요 래퍼 클래스와 해당 기본 데이터 타입 | 래퍼 클래스의 주요 기능과 예시 1. 값 변환 문자열을 해당 래퍼 클래스의 타입으로 변환하거나, 해당 타입의 값을 다른 타임으로 변환할 수 있다. int i = Integer.parseInt("123"); String s = Integer.toStrin..