1.scanner.HasNext()와 정규표현식을 활용한 접근 제어
전체 코드
import java.util.Scanner;
public class RegexExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String regex = "[a-z0-9]+";
System.out.println("문자를 입력하세요 (종료하려면 'exit' 입력):");
while (scanner.hasNext()) { // 입력이 있는 동안 반복
String input = scanner.next(); // 사용자 입력 받기
if (input.equals("exit")) {
break; // 종료 조건
}
// 정규 표현식으로 입력 검사
if (input.matches(regex)) {
System.out.println(input + "는 유효한 입력입니다.");
} else {
System.out.println(input + "는 유효하지 않은 입력입니다.");
}
}
scanner.close();
}
}
초기 상태
Scanner scanner = new Scanner(System.in);
String regex = "[a-z0-9]+";
+-----------------------+
| 메모리 상태 |
+-----------------------+
| scanner |
| regex: "[a-z0-9]+" |
+-----------------------+
사용자 입력 문자열(input) 저장 정규 표현식 매칭
while (scanner.hasNext()) { // 입력이 있는 동안 반복
String input = scanner.next(); // 사용자 입력 받기
...
if (input.matches(regex)) {
System.out.println(input + "는 유효한 입력입니다.");
} else {
System.out.println(input + "는 유효하지 않은 입력입니다.");
}
}
+-----------------------+
| 메모리 상태 |
+-----------------------+
| scanner |
| regex: "[a-z0-9]+" |
| input: (사용자 입력) |
+-----------------------+
출력: "유효/유효하지 않음"
String 자료형은 matches 메서드를 통해 정규표현식 조건에 일치하는 지 볼 수 있다.
scanner도 hasNext()를 통해 입력값을 바로 정규표현식과 일치여부를 볼 수 있다.
둘 다 반환값은 boolean이다.
종료 조건
if (input.equals("exit")) {
break; // 종료 조건
}
+-----------------------+
| 메모리 상태 |
+-----------------------+
| scanner |
| regex: "[a-z0-9]+" |
| input: "exit" |
+-----------------------+
스캐너 종료
scanner.close();
+-----------------------+
| 메모리 상태 |
+-----------------------+
| regex: "[a-z0-9]+" |
+-----------------------+
2.데일리 루틴
SQL
SELECT
CASE
WHEN PRICE < 10000 THEN '0'
WHEN PRICE < 20000 THEN '10000'
WHEN PRICE < 30000 THEN '20000'
WHEN PRICE < 40000 THEN '30000'
WHEN PRICE < 50000 THEN '40000'
WHEN PRICE < 60000 THEN '50000'
WHEN PRICE < 70000 THEN '60000'
WHEN PRICE < 80000 THEN '70000'
WHEN PRICE < 90000 THEN '80000'
END AS PRICE_GROUP,
count(product_id) AS PRODUCTS
FROM
PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
CASE WHEN ~ THEN ~ 문법을 사용하는 예제 수준 문제가 나왔다.
숫자 자료에서 대소비교를 사용하는 게 그동안 나온 것과 차이점이다.
연산 순서를 유의하는 게 좋다. FROM으로 테이블을 불러오고, CASE WHEN으로 IF문과 같은 방식으로 데이터를 반환하고, GROUP BY와 count 조합으로 연산된 다음, 마지막으로 정렬된다.
Java
class Solution {
public int solution(int[][] sizes) {
int maxWidth = 0;
int maxHeight = 0;
for (int[] size : sizes) {
// 가로와 세로 길이 중에서 큰 값을 maxWidth에, 작은 값을 maxHeight에 저장
int width = Math.max(size[0], size[1]);
int height = Math.min(size[0], size[1]);
maxWidth = Math.max(maxWidth, width);
maxHeight = Math.max(maxHeight, height);
}
// 지갑의 크기 계산 (maxWidth * maxHeight)
return maxWidth * maxHeight;
}
}
이중배열을 순회하며 간단하게 최대 값을 찾는 문제다.
참조. 정규표현식을 정리했다. 예제만 따라가도 정규표현식 개념들이 습득되도록 쉽게 배치했다.
'(2024-10) 스파르타 내일배움캠프 - 백엔드 > TIL' 카테고리의 다른 글
(2024-11-21) 스파르타 키오스크 과제 (0) | 2024.11.21 |
---|---|
(2024-11-20) TIL (1) | 2024.11.20 |
(2024-11-18) TIL (1) | 2024.11.18 |
(2024-11-15) TIL (1) | 2024.11.15 |
(2024-11-14) TIL (0) | 2024.11.14 |