본문 바로가기
AI SCHOOL/TIL

[DAY 77] 코딩테스트 연습 - 정규표현식, 페이지 교체 알고리즘, 카카오 문제

2023. 4. 14.

정규표현식 활용 문제 풀이로 강의가 시작되었다.

페이지 교체 알고리즘 FIFO, LRU에 대해서 배웠다.

정규표현식 활용

1. 알파벳 소문자와 공백으로 이루어진 문자열 my_string이 주어질 때, 모음을 제거한 문자열 출력

re.sub(r'[aeiou]', '', my_string)

sub을 통해 모음인 aeiou를 제거하여 반환한다. 정규표현식 라이브러리 re를 로드하는 구문 import re는 당연히 선행되어야 한다.

my_string = 'hi everyone'
re.sub(r'[aeiou]', '', my_string)

# 실행 결과
'h vryn'

hi에서 i가 제거되었고 everyone에서 e 3개와 o가 제거되었다.


2. 알파벳 대소문자로 이루어진 문자열 my_string과 알파벳 하나로 이루어진 letter가 주어질 때 my_string에서 letter를 제거한 문자열 출력

re.sub(letter, '', my_string)

sub을 이용하여 my_string에서 letter를 제거한다. 위 문제와 매우 흡사하다.

my_string = 'hello'
letter = 'l'
re.sub(letter, '', my_string)

# 실행 결과
'heo'

hello에서 l이 제거된 heo가 출력되었다.


3. 알파벳과 한자리 자연수로 구성된 문자열 my_string이 주어질 때, 자연수만 추출해 덧셈한 결과 출력

result = re.sub(r'[^1-9]', '', my_string)
sum(map(int, result))

my_string에서 1~9가 아닌 것을 제거한다. 즉 숫자만 남긴다. 그 후 두 번째 줄에서 그 숫자들을 모두 더한다.

my_string = 'hi4 e5vERy7boDy9'
result = re.sub(r'[^1-9]', '', my_string)
sum(map(int, result))

# 실행 결과
25

알파벳들은 모두 제거되고 4, 5, 7, 9만 남게 된다. 그 총합인 25가 출력된다.


4. 자연수 number가 주어질 때 number에 포함된 3, 6, 9의 개수 출력

len(re.findall('[369]', str(number)))

number를 문자열로 변경하여 3, 6, 9를 모두 찾은 리스트의 길이를 구한다.

number = 3377769345
len(re.findall('[369]', str(number)))

# 실행 결과
5

7과 4, 5는 제거되고 총 5개가 남는다.

페이지 교체 알고리즘

FIFO(First In First Out)과 LRU(Least Recently Used) 알고리즘에 대해 학습했다.
코딩테스트 문제에서 나올만한 Top 2 알고리즘이라 하셨다. 그리고 알고리즘에 대해 문제에서 설명하지 않을 수 있기 때문에 정확히 알고 있어야 한다.

lru
LRU 알고리즘 출처 : https://afteracademy.com/blog/

특히 LRU 알고리즘은 꼭 숙지하고 넘어가자.

과거 카카오 공채 코딩테스트에서 나왔던 문제들을 풀고 강의가 마무리되었다.
- 다트게임, [1차] 캐시, 비밀지도, 실패율, 오픈채팅방
이미 풀었던 문제들도 있었지만 다시 한 번 풀게 되는 계기가 되었고 좋았다.
다음주가 마지막 수업인데 아쉬우면서 기대가 된다.

반응형

댓글