정규표현식은 문자열 패턴을 나타내는 표현 방식이다. 많은 경우 정규 표현식을 대체할 수 있는 자바 내장 라이브러리들이 있지만 경우에 따라 더욱 편리할 때가 있다. -자주 표현되는 정규표현식 정규표현식 내용 . 개행 문자를 제외한 아무 문자 [abc] a, b, c 중 아무것이나 [^abc] a, b, c를 제외하고 [a-g] a, g 사이의 문자들 [0-9], [a-z], [A-Z] => 모든 숫자, 소문자, 대문자 a* a 0개 이상 a+ a 1개 이상 a? a 0개 또는 1개 a{5} a 5개 a{2,} a 2개 이상 a{2,4} a 2개 이상 4개 이하 ab|cd ab 또는 cd ^a 문자열의 처음 문자가 a a$ 문자열의 마지막 문자가 a \ 사전 정의된 문자를 표현한느 이스케이프 시퀀스 -Str..
분류 전체보기
1. SRP(Single responsi단일 책임 원칙) : 한 클래스는 하나의 책임만 가져야 한다. -> 코드를 변경했을 때 파급이 작음. 2. OCP(open/closed principle) 개방-폐쇄 법칙 : 확장에는 열려있으나 변경에는 닫혀있다. -> 다형성 활용 -> 인터페이스를 구현한 새로운 클래스를 하나 만들어서 기능을 구현 3. LSP(리스코프 치환법칙) : 기능적으로 보장 (액셀은 앞으로 가자 -> 뒤로 가면 위반) 4. ISP (Interface Segregation principle 인터페이스 분리 법칙) : 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다. 5. DIP (Dependency inversion principle 의존관계 역전 원칙) : 클라이..
1. 문제 2. 풀이 1) 첫 번째 풀이 public int[] solution1(int n) { int max_num = n * (n + 1) / 2; int[] answer = new int[max_num]; int[][] triangle = new int[n][n]; int x = 0; int y = 0; int num = 1; int v = n; while (v > 0) { // 아래로 이동 for (int i = 0; i < v; i++) { triangle[y++][x] = num; num++; } y--; // index 범위 벗어남 다시 제자리로 x++; // 다음 위치로 이동 v--; for (int i = 0; i < v; i++) { triangle[y][x++] = num; num+..
1. 문제 간단한 게시판 프로젝트 중 게시글 조회에서 오류가 발생하였다. // User Entity @Entity @Table(name = "users") @AllArgsConstructor @Getter @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; @OneToMany(mappedBy = "user") private List posts = new..
import java.util.*; class Solution { public List solution(String s) { List answer = new ArrayList(); int[] alphabet = new int[26]; for(int i = 0 ; i < 26; i++){ alphabet[i] = -1; } for(int i = 0 ; i < s.length() ; i++){ int index = ((int)s.charAt(i) % 26); if(alphabet[index] == -1){ answer.add(-1); } else{ answer.add(i-alphabet[index]); } alphabet[index] = i; } return answer; } }
Spring 공부를 시작하고 나서 어제 그제 이틀 동안은 DB 연결 문제가 있어 수업을 제대로 따라가지 못했다 ㅠㅠ 하지만 오늘 자고 일어나서 코드를 다시 써보니 됐다. 달라진 게 없는데 왜 여태 안되다가 이제는 될까?? 오늘 배운 3 Layer Architecture에 대해 서술해 보겠다. 3 Layer Architecture 지금까지 만든 수업을 진행하며 만들었던 메모장 프로젝트는 Controller 클래스 하나로 모든 API를 처리하고 있었다. 하지만 나중에 코드가 복잡해지면 문제가 생길 수 있기 때문에 Controller, Service, Repository 3개로 분리해 놓았고 각각 하는 역할을 정리해 본다면 1. Controller : 클라이언트의 요청을 받고, 로직 처리는 Service에게 ..
https://school.programmers.co.kr/learn/courses/30/lessons/87377?language=java 1. 문제 설명 Ax + By + C = 0으로 표현할 수 있는 n개의 직선이 주어질 때, 이 직선의 교점 중 정수 좌표에 별을 그리려 합니다. 예를 들어, 다음과 같은 직선 5개를 2x - y + 4 = 0 -2x - y + 4 = 0 -y + 1 = 0 5x - 8y - 12 = 0 5x + 8y + 12 = 0 좌표 평면 위에 그리면 아래 그림과 같습니다. 이때, 모든 교점의 좌표는 (4, 1), (4, -4), (-4, -4), (-4, 1), (0, 4), (1.5, 1.0), (2.1, -0.19), (0, -1.5), (-2.1, -0.19), (-1.5..
1. 오류(Error) vs 예외(Exception) 1) 오류 : 오류는 일반적으로 회복이 불가능한 문제 주로 시스템 레벨, 또는 주로 환경적인 이유로 발생한다. 2) 예외 : 코드에 예외가 발생할 수 있다는 것을 인지하고 대응했을 때 회복이 가능한 문제 현실적으로 코드레벨에서 다룰 수 있는 문제상황은 '예외처리'에 속한다. 2. 코드실행 관점에서 예외의 종류 1) 컴파일 에러(예외) .java 파일을 .class 파일로 컴파일할 때 발생하는 에러 주로 문법 오류 2) 런타임 에러(예외) 주로 다루게될 에러(예외) 문법적인 오류는 아니라서 컴파일은 잘 되었지만 프로그램이 실행도중 맞닥뜨리게 되는 예외 3. 예외처리 관점에서 예외의 종류 1) 확인된 예외(Checked Exception) 컴파일 시점에 ..
1. 추상클래스 클래스를 설계도로 비유한다면 추상클래스는 미완성된 설계도이다. 예를 들어 여러 종류의 TV를 생산한다고 가정했을 때 사실 이들의 설계도 90%는 같을 것이며 공통부분을 따로 빼놓는 게 다양한 제품을 만드는데 효율적일 것이다. 1) 추상 클래스의 특징 : 추상 클래스는 추상 메서드를 포함할 수 있다. 그러나 추상 메서드가 없어도 추상 클래스로 선언은 가능하다. 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있다. 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출하여 만들 수 있다. 2) 추상 메서드 : 아직 구현되지 않은 미완성된 메서드 abstract 키워드를 사용하여 추상 메서드를 선언할 수 있으며 일반적인 메서드와 달리 블록{}이 없다. ..
1. 참조변수의 타입변환 자동 타입변환 : 부모타입 변수 = 자식타입 객체; 는 자동으로 부모타입으로 변환이 일어남. 자식 객체는 부모 객체의 멤버를 상속받기 때문에 부모와 동일하게 취급될 수 있음. 강제 타입변환 : 자식타입 변수 = (자식타입) 부모타입 객체; 부모타입 객체는 자식타입 변수로 자동으로 타입변환되지 않음 다만 자식타입 객체가 부모타입으로 자동 타입변환된 후 다시 자식타입으로 변환될 때만 강제 타입변환이 가능하다. 부모타입 변수로는 자식타입객체의 고유한 멤버를 사용할 수 없기 때문에 사용이 필요한 경우가 생겼을 때 장제 타입변환을 사용한다. // 자식타입객체가 자동 타입변환된 부모타입의 변수 Mammal mammal = new Whale(); mammal.feeding(); // 자식객체..