나의 원씽 플랜
0. 확언
- 어제보다 더 나은 사람이 되기
- 질보다 양이다. 꾸준함으로 버티자.
1. 미라클모닝
- 6시 기상성공
2. 팔굽혀펴기
- 완료
3. CAKE 10분 학습하기
- 완료
4. 전문지식 공부하기 (알고리즘, CS, python 심화)
- 프로그래머스 두 문제 풀이
5. TIL 작성하기
오늘 한 일
- Cake 학습
- 대기업 자소서 작성연습
- 프로그래머스 두 문제 풀이
간단정리
Cake 일일 퀴즈
대박, 쩌는데? 이런.. 말도 안 돼! 등 리액션
That's dope! (쩐다!)
Totally! (물론이지!)
So cool! (완전 대박이야!)
Jesus! (제기랄!)
No way! (말도 안돼!)
Yikes. (이런.)
Cake 일일 회화
drop : (동사) ~을 떨어뜨리다
have something on one's mind : 마음에 걸리는 것이 있다, 걱정하다
be anxious about ~ : ~ 때문에 불안해하다
tight : (형용사) (일정, 비용 등이) 빡빡한
be all thumbs : 서투르다, 어설프다
you've got this. : 잘 해내실 거에요
프로그래머스 문제 풀이
시간남을 때 1~2 레벨을 모두 풀어보는 것을 목표로 풀기 시작
자신감 증진을 위해(?) 1레벨 부터 풀어보았다.
로또의 최고 순위와 최저 순위
https://programmers.co.kr/learn/courses/30/lessons/77484
풀이
등수를 저장한 rank list 를 활용한 풀이방식이 최선의 방식인듯
# my answer
def solution(lottos, win_nums):
# 최고점 : 0 으로 표기된 숫자가 모두 일치할 경우
# 최저점 : 0 으로 표기된 숫자가 모두 일치하지 않을 경우
zero_count = 0
for num in lottos:
if num == 0:
zero_count += 1
elif num in win_nums:
win_nums.remove(num)
# lottos == 0: 1 // lottos == 1: 2
max_val = len(win_nums) - zero_count + 1 if len(win_nums) - zero_count != 6 else 6
min_val = len(win_nums) + 1 if len(win_nums) != 6 else 6
answer = [max_val, min_val]
return answer
# best answer
def solution(lottos, win_nums):
# 최고점 : 0 으로 표기된 숫자가 모두 일치할 경우
# 최저점 : 0 으로 표기된 숫자가 모두 일치하지 않을 경우
rank = [6, 6, 5, 4, 3, 2, 1]
zero_count = 0
ans = 0
for num in lottos:
if num == 0:
zero_count += 1
elif num in win_nums:
ans += 1
answer = [rank[ans + zero_count], rank[ans]]
return answer
신규 아이디 추천
https://programmers.co.kr/learn/courses/30/lessons/72410
풀이
정규식에 대해 복습할 수 있는 기회가 되었다.
string.lower() => 대문자를 소문자로 변환
string.upper() => 소문자를 대문자로 변환
string.capitalize() => 첫 글자만 대문자로 변환
st = st.lower()
re.sub('패턴', '바꿀문자열', '문자열', 바꿀횟수)
# a-z 알파벳 & 0-9 숫자 & -_. 을 제외한 문자를 '' 으로 변환
st = re.sub('[^a-z0-9\-_.]', '', st)
# .+ 를 사용하면 . 뒤에 .이 나오는지 체크한다.
# . 뒤에 . 이 나오면 '.' 으로 변환
st = re.sub('\.+', '.', st)
# ^ 는 문자의 시작 / $ 는 문자의 마지막을 의미한다.
# ^[.] --> 시작이 . 인 것 / [.]$ --> 마지막이 . 인 것
# 처음과 마지막이 . 이면 '' 으로 변환
st = re.sub('^[.]|[.]$', '', st)
# 5, 6단계
# list slicing 에서 끝 인덱스는 범위를 벗어난 인덱스를 지정할 수 있음
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
# 7단계
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
# my solution
import re
def remove_first_last_dot(plain_text):
while plain_text[0] == "." or plain_text[-1] == ".":
if plain_text == ".":
plain_text = ""
return plain_text
elif plain_text[0] == ".":
plain_text = plain_text[1:]
elif plain_text[-1] == ".":
plain_text = plain_text[:-1]
return plain_text
def solution(new_id):
if len(new_id) != 0:
# 1단계 new_id 의 모든 대문자를 대응되는 소문자로 치환합니다.
new_id = new_id.lower()
# 2단계 new_id 에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
p = re.compile('[^0-9a-z-_.]')
new_id = re.sub(p, "", new_id)
# 3단계 new_id 에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
while ".." in new_id:
new_id = new_id.replace("..", ".")
else:
new_id = "a"
# 4단계 new_id 에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
# print(new_id)
new_id = remove_first_last_dot(new_id)
# 5단계 new_id 가 빈 문자열이라면, new_id에 "a"를 대입합니다.
if len(new_id) == 0:
new_id = "a"
# 6단계 new_id 의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
# 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
# 7단계 new_id 의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
if len(new_id) <= 2:
new_id += new_id[-1] * (3 - len(new_id))
elif len(new_id) >= 16:
new_id = remove_first_last_dot(new_id[:15])
return new_id
# best solution
def solution(new_id):
st = new_id
st = st.lower()
# a-z 알파벳 & 0-9 숫자 & -_. 을 제외한 문자를 '' 으로 변환
st = re.sub('[^a-z0-9\-_.]', '', st)
# .+ 를 사용하면 . 뒤에 .이 나오는지 체크한다.
# . 뒤에 . 이 나오면 '.' 으로 변환
st = re.sub('\.+', '.', st)
# ^ 는 문자의 시작 / $ 는 문자의 마지막을 의미한다.
# ^[.] --> 시작이 . 인 것 / [.]$ --> 마지막이 . 인 것
# 처음과 마지막이 . 이면 '' 으로 변환
st = re.sub('^[.]|[.]$', '', st)
# 5, 6단계
# list slicing 에서 끝 인덱스는 범위를 벗어난 인덱스를 지정할 수 있음
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
# 7단계
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
느낀점
- cake 는 켜기만 하면 생각보다 10분을 채우기 쉽다. 정리하는 시간이 더 길다!
- 대기업 자소서는 대부분 비슷한 느낌이다. 지원동기, 입사후 포부, 강점 등...
- 프로그래머스를 취미처럼 풀어보자
- 이제부터 원씽은 본업에 도움이 되는 공부 (영어 조금, 전공지식 많이)
'TIL' 카테고리의 다른 글
[TIL] 2021.09.25 (0) | 2021.09.25 |
---|---|
[TIL] 2021.09.24 (0) | 2021.09.24 |
[TIL] 2021.09.17 (0) | 2021.09.18 |
[TIL] 2021.09.16 (0) | 2021.09.17 |
[TIL] 2021.09.15 (0) | 2021.09.15 |
최근댓글