자바 13

프로그래머스 - 햄버거 만들기

풀이. 이 문제는 Stack을 사용하면 쉽게 풀 수 있는? 문제 일단 stack 에 ingredient배열을 돌면서 첫번째 요소부터 차례로 push 이후 stack 요소의 갯수가 4이상일 때 들어오는 숫자가 1(빵)이라면 stack.get메서드를 사용해 재료 순서인 1, 2, 3, 1이 맞는지 확인 맞으면 answer++ 해주고 재료비우기 그다음엔 또 push 반복해서 또 다음 조건에 만족하면 반복 아니면 그냥 push... 결국 배열을 끝까지 돌기도 하고 햄버거 완성갯수에 따라 inner for문이 반복되어 숫자가 커질수록 오래 걸리는 감이 있다. import java.util.Stack; class Solution { public int solution(int[] ingredient) { int an..

CODING TEST 2023.08.10

프로그래머스 - 대충 만든 자판

풀이. 처음 문제를 풀었을 때 최소 횟수를 제대로 매핑하지 못해서 테스트 케이스를 많이 틀렸다. 먼저 HashMap map 에 키와 밸류를 매핑해주는데 이때 기존에 키를 가지고 있다면 더 작은 값을 넣어주는게 일단 중요함. 그리고 또 테스트 케이스를 틀리게 했던 부분은 문제 의도를 잘못해석해서 키가 없을 경우 -1을 넣어줘야 하는데 그냥 전체를 -1로 리턴했다.. 가령 keymap 이 ["AA"] 이고 targets가 ["B", "A"] 라면 정답은 [-1, 1]이 되어야 하는데 문제를 잘못 이해해 그냥 [-1]로 리턴한 것. 이 두 부분만 잘 이해하고 넘어갔다면 쉽게 풀 수 있었을텐데 아직 문제 파악이 서툰것 같다. 그래도 끙끙대며 맞추기 성공! import java.util.HashMap; class..

CODING TEST 2023.08.10

제네릭(Generic) 프로그래밍 이해하기

제네릭 자료형 정의. 자바 제네릭(Generic)은 자바에서 도입된 타입 매개변수화 기능입니다. 제네릭을 사용하면 클래스나 메서드를 정의할 때 타입을 매개변수로 받아서 재사용할 수 있습니다. 이는 코드의 재사용성과 유연성을 높여줍니다. - 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언 - 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 - 컬렉션 프레임워크에서 많이 사용되고 있음 제네릭 자료형을 사용하는 예시. 술을 만들 때 다양한 재료를 기반으로 만들 수 있습니다. 와인은 포도, 맥주는 맥아를 주된 재료로 만들어 집니다. 이를 코드로 만들어 ..

BACKEND/JAVA 2023.06.11

상속과 상속에서 클래스 생성 과정과 형 변환.

상속이란. 객체 지향 프로그래밍의 중요한 특징 중 하나는 상속이다. 상속은 우리가 일반 적으로 알고있듯 물려받는다는 의미이다. 부모에게서 재산을 상속 받듯이 객체 지향 프로그래밍에서도 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현하는 것이다. 이미 구현된 클래스 보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속한다. 하위 클래스 -> 상위 클래스 방향으로 화살표를 그려줘야 한다. 부모 클래스 -> 자식 클래스 방향이 아니다! 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived clas..

BACKEND/JAVA 2023.06.08

객체지향 프로그래밍과 클래스

객체(Object) 의사나 행위가 미치는 대상 구체적, 추상적 데이터의 단위(학생, 회원, 생산, 주문, 배송) 객체 지향 프로그램과 절차 지향 프로그래밍 아침에 일어나 학교를 가는 과정을 예로 들어본다면 절차지향 프로그래밍 시간이나 사건의 흐름에 따른 프로그래밍 일어난다 → 씻는다 → 밥을 먹는다 → 버스를 탄다 → 요금을 지불한다 → 학교에 도착 물건을 고른다 → 장바구니에 넣는다 → 주문을 한다 → 금액을 지불한다 → 배송 시작 → 배송완료 객체 지향 프로그래밍 객체 지향 프로그래밍이란, 어떤 대상(객체)을 가지고 프로그래밍한다. 객체를 정의하고 객체간 협력을 프로그래밍 하는 것 클래스. 객체 지향 프로그래밍은 클래스를 기반으로 프로그래밍합니다. 클래스는 객체의 속성과 기능을 코드로 구현한 것으로 ..

BACKEND/JAVA 2023.06.05

자바 - 스트림(Stream)

스트림(Stream). 자료가 모여 있는 배열 또는 컬렉션, 일련의 연산이나 정렬, 숫자를 처리하는 기능 등이 미리 구현되어 사용할 수 있다면 간결하고 일관성있는 코드 작성이 가능합니다. 여러 자료의 처리에 대한 기능을 구현해 놓은 클래스가 바로 스트림 입니다. 스트림을 활용하면 배열, 컬렉션 등의 자료를 일관성 있게 처리할 수 있습니다. (입출력 스트림과는 다른 개념입니다.) 예로 1부터 5까지 정수를 담은 배열과 ArrayList의 요소를 하나씩 출력한다고 가정한다면 아래와 같이 작성할 수 있습니다. package june2023.day04; import java.util.ArrayList; import java.util.Arrays; import java.util.stream.IntStream; p..

BACKEND/JAVA 2023.06.04

자바 클래스 - Wrapper 클래스

시작하며. 자바 Wrapper 클래스에 대한 이해도를 높여봅시다. 기본 자료형을 위한 클래스. 자바에서 정수를 사용할 때 int 라는 기본형을 사용한다. 하지만 정수를 객체형으로 사용해야 하는 경우가 있다. 매개변수가 객체거나, 반환 값이 객체거나, 항변환을 위해서 등등 이를 위해 자바에서는 기본 자료형처럼 사용할 수 있는 클래스를 제공한다. 이러한 클래스를 기본 자료형을 감쌌다는 의미로 Wrapper 클래스라고 한다. 기본형 Wrapeer 클래스 boolean Boolean byte Byte char Character short Short int Integer long Long float / double Float / Double Integer 클래스. Integer 클래스는 개체에서 기본 형식 int..

BACKEND/JAVA 2023.06.03

기초수학 - 집합(Set)

집합(Set). 기초 수학에서 집합은 (특정조건에 맞는)원소들의 모임을 의미합니다. 집합은 중복되지 않는 원소들로 구성되며, 순서는 중요하지 않습니다. 집합은 중괄호{}로 표현되며, 각 원소는 쉼표로 구분됩니다. 집합을 표현하는 방법으로는 원소나열법, 조건제시법, 벤 다이어그램이 있습니다. 집합에 대해 알아보며 이를 자바 코드로 구현해봅시다. 집합 표현 방법. 원소나열법 A = {1, 2, 3, 4, 5}, B = {2, 4, 6, 8, 10} 조건제시법 A = {A | A는 정수, 1 ≦ A ≦ 5 } B = {2B | B는 정수, 1 ≦ B ≦ 5} 벤 다이어그램 교집합. 두 집합이 공통으로 포함하는 원소로 이루어진 집합 A ∩ B = { 𝑥 | 𝑥 ∈ A and 𝑥 ∈ B } 합집합. 어느 하나에라..

자바 클래스 - String 클래스

시작하며. 자바 기본 클래스 중에서도 자주 사용하는 String 클래스에 대한 이해를 높여보자. String을 선언하는 두가지 방법. String은 자바에서 문자열을 사용하기 위한 클래스이다. 아주 많이 활용하기때문에 생성 할때도 어떤 차이가 있는지 알아보자. String loopy = new String("loopyString"); // String 클래스의 생성자 매개변수로 생성 String loopy1 = "loopy"; // 문자열 상수를 가리키는 방식으로 생성 String loopy2 = "loopy"; // 문자열 상수를 가리키는 방식으로 생성 new 예약어로 사용해 객체를 생성하는 경우 "loopyString" 문자열을 위한 메모리가 할당 되고 새로운 객체가 생성 두번째, 세번째 줄 처럼 생..

BACKEND/JAVA 2023.05.27

자바 클래스 - Object 클래스

시작하며. JDK는 Java Development Kit의 약자로, Java 프로그래밍을 위한 개발 도구들의 집합을 말합니다. JDK는 Java 언어로 작성된 애플리케이션, 애플릿, 라이브러리 등을 개발하고 실행하기 위해 필요한 도구들을 제공. 이런 JDK에서 제공하는 많은 클래스를 활용하면 프로그램을 효율적으로 구현할 수 있다. 다 외울 필요는 없고 찾아보며 쓰면 되지만 기본적인 내용은 알고 넘어가기 위해 정리하고자 한다. java.lang 패키지. java.lang 패키지는 Java에서 가장 기본적이고 핵심적인 클래스들을 포함하는 패키지이다. 이 패키지는 자동으로 컴파일할 때 import되기 때문에 별도의 import 문을 추가하지 않아도 사용할 수 있다. 그렇기 때문에 직접 import하지 않아도 ..

BACKEND/JAVA 2023.05.27