본문 바로가기
728x90

프로그래밍 언어42

열거 타입(Enum) 그동안 Java로 문제 풀이를 할 때 enum을 몰라서 string 배열 등을 사용했었는데 enum을 여러 번 듣게 되어서 한 번 정리 및 공부해보려고 한다. enum 이러한 상수를 단순히 정수로 치부하지 말고 객체 지향적으로 객체화해서 관리하자는 취지 Java에서는 enum을 인터페이스와 같이 독립된 특수한 클래스로 구분 reference 타입으로 분류되며, enum 상수값은 힙 영역에 저장됨 일종의 클래스이지만 인스턴스화는 불가능: 고정된 정수들의 집합으로써 컴파일 타임에 모든 값을 알고 있어야 하기 때 장점 코드가 단순해지며 가독성이 좋아짐 허용 가능한 값들을 제한하여 유형 안전을 제공 구현의 의도가 열거임을 분명하게 나타낼 수 있음 switch문에서도 사용할 수 있음 단순 상수와 비교해 IDE의 .. 2023. 10. 20.
[프로그래머스] 숫자 짝꿍 시간 초과 import java.util.regex.Pattern; import java.util.Arrays; class Solution { public String solution(String X, String Y) { String answer = ""; String reg = "[0]+"; for(int i=0;i 2023. 10. 20.
정규표현식 정규표현식(Regular Expression): 특정 문자열의 규칙을 가지는 문자열의 집합을 표현하는 데 사용되는 언어 정규표현식 패턴 문자 클래스 \\w: 문자만 허용 \\W: 문자가 아닌 경우에만 허용 \\d: 숫자만 허용 \\D: 숫자가 아닌 경우에만 허용 \\s: 공백 문자, 탭만 허용 \\S: 공백 문자, 탭이 아닌 경우에만 허용 어셜선(Assertions): 행이나 단어의 시작, 끝을 나타내는 경계와 어떤식으로든 매치가 가능한 것을 나타내는 패턴 ^: 문장의 시작 $: 문장의 끝 수량자(Quantifiers): 일치 시킬 문자 또는 표현식의 수 ?: 없거나 있거나 *: 없거나 있거나 많거나 +: 하나 또는 많이 {n}: n개가 있는 {min,}: 최소 {min, max}: 최소, 그리고 최대 .. 2023. 10. 17.
포함관계와 추상화 구현 순서 포함관계 클래스 A, B, C, D를 클래스 N에 포함시키고자 할 때 클래스 N에 클래스 A의 변수 a, B의 변수 b, ... 를 선언한다. 클래스 N의 생성자를 선언하면서 매개변수를 (A a, B b, C c, D d)으로 받고 this.a = a; this.b = b; 로 각각 저장한다. 이후 클래스 N에서 변수 a, b, c, d의 메서드를 사용한다. ABCD의 공통된 부분으로 추상 클래스 M을 생성(추상화) ABCD의 공통된 함수를 추상 메서드 e로 만든다. 각 A, B, C, D가 M을 상속받고 각각 클래스 내에서 추상 메서드 e를 재정의한다. 클래스 N에 a, b, c, d 대신 추상 클래스 M의 변수 m을 선언한다. 클래스 N의 생성자의 매개변수로 (M m)을 받고 this.m = m;으로.. 2023. 10. 16.
추상 클래스와 인터페이스 비교 추상 클래스와 인터페이스의 공통점: 가지고 있는 추상 메서드를 구현하도록 강제 인스턴스화 불가능 추상 클래스의 목적: 해당 추상 클래스를 상속받아 기능을 이용하고 확장하는 것. 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 public 이외의 접근제어자가 필요한 경우 일반 메서드가 존재할 수 있음 (추상 메서드 1개 이상) 인터페이스의 목적: 함수 구현을 강제하여 구현 객체의 같은 동작을 보장. 클래스와 별도로 같은 기능이 필요할 때 사용 일반 변수를 가질 수 없음 (static final이어야 함) 다중 상속 가능 + 추상 클래스 = 구체적인 여러 클래스들을 일반화된 개념으로 묶은 것 인터페이스 = 여러 클래스들을 행위적 일관성으로 묶은 것 2023. 10. 16.
자주 쓰는 함수 타입 변환 문자열(String)을 숫자(int)로: int a = Integer.parseInt(String b) 숫자(int)를 문자열(String)으로: String b = Integer.toString(int a) Long형일 때는 Long.toString() 문자를 문자열(String)으로: String str = String.valueOf(char c) 대소문자 확인 Character.isUpperCase(char c) Character.isLowerCase(char c) n의 제곱근(double 형) Math.sqrt(n) 배열 import java.util.Arrays; 정렬하기: Arrays.sort(정렬할 배열); 배열 자르기: arr1 = Arrays.copyOfRange(arr0, s.. 2023. 10. 10.