728x90
https://school.programmers.co.kr/learn/courses/30/lessons/120956
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr


머쓱이 조카의 옹알이를 들어보자..
사실 그냥 풀고 넘어가려고했는데 다른분 풀이에서 정규식으로 풀고 넘어간게 있어서 끄적끄적 쓰고가려고한다.
나는 그냥 카운팅 개념으로 replace함수를 사용했다
입출력 예제에 'wyeoo' 가 있었는데 'ye'가 사라졌을 때 공백이없으면 woo도 없어져서 카운팅 되기 때문에 공백을 추가했다
function solution(babbling) {
const arr = ['aya', 'ye', 'woo', 'ma']
let cnt = 0
for (let bab of babbling) {
let temp = bab
for (let word of arr) {
temp = temp.replace(word, ' ')
}
if (temp.trim() === '') {
cnt++
}
}
return cnt
}

정규 표현식을 이용한 풀이도 있다는걸 깨달았다.
^ : 문자열의 시작
(aya|ye|woo|ma) : aya, ye, woo, ma 중 하나와 일치
| : '또는' 연산자
+ : 앞의 패턴이 1번이상 반복
$ : 문자열 끝
정규표현식은 슬래시사이에 패턴을 작성하는 리터럴 방식(로드타임 컴파일)과
RegExp객체(런타임 컴파일)를 생성하는 방식이 있는데 각각 정적 / 동적 일때 사용하면 된다.
// 동적으로 패턴 생성이 필요한 경우
const userInput = "hello";
const regex = new RegExp(userInput);
// 고정된 패턴인 경우
const isNumber = /^[0-9]+$/.test("123"); // true
LoadTime / Runtime (from: claude)
더보기
로드 타임 (Load Time)
- 프로그램이 시작될 때 코드를 메모리에 불러오는 시점
- 코드 파일을 읽고 초기 설정을 하는 단계
- 예시:
// 로드 타임에 실행됨
const constant = 5;
const regex = /hello/; // 정규표현식 리터럴도 로드 타임에 처리
런타임 (Runtime)
- 프로그램이 실제로 실행되는 시점
- 사용자의 입력을 처리하거나 동적으로 데이터를 다루는 단계
- 예시:
// 런타임에 실행됨
function handleClick() {
const userInput = getUserInput(); // 사용자 입력은 런타임에 발생
const dynamicRegex = new RegExp(userInput); // 동적 정규표현식은 런타임에 생성
}
가장 큰 차이점은:
- 로드 타임: 정적인 코드를 처리하는 "준비" 단계
- 런타임: 실제로 프로그램이 동작하면서 동적으로 처리되는 "실행" 단계
test() 함수는 정규표현식의 메서드로 문자열이 정규표현식과 일치하는지 검사한다.
반환값은 boolean ~
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 석유 시추 (1) | 2025.02.14 |
|---|---|
| [프로그래머스] 가장 큰 수 (Python) lambda, sorted functool.cmp_to_key (0) | 2025.02.06 |
| [프로그래머스] 롤케이크 자르기(Python) (0) | 2024.06.27 |
| [프로그래머스] 등굣길(Python) (0) | 2024.06.24 |