파이썬 함수 eval, exec
출처:
https://chancoding.tistory.com/185
무엇을?
eval("문자열로 된 파이썬 코드")
: 문자열로 된 파이썬 코드를 실행한 값을 반환함 (return 있음)
exec("문자열로 된 파이썬 코드")
: 문자열로 된 파이썬 코드를 실행만 함 (return 없음)
왜?
sum()
처럼 곱셈()
같은 게 있었으면 좋을텐데… 하면서 찾다가 발견!
어떻게?
곱한값 = eval("*".join([str(n) for n in 자연수리스트]))
요런 식으로 사용함
파이썬 정규식 모듈 re 사용하기
출처: http://pythonstudy.xyz/python/article/401-정규-표현식-Regex
무엇?
- 정규식 (regular expression) ^743493
- 특징
- 정규식 기본 문법
[abc]
: 해당 글자가 a, b, c 중 하나를 포함한다 (ex. “a”, “before”)[a-zA-Z], [0-9]
:-
를 이용하여 범위 지정. 각각 알파벳 전체, 숫자 전체를 의미- 메타문자 : 정규식 표현을 위해 원래 의미가 아닌 다른 용도로 사용되는 문자
.
: 줄바꿈 문자인\n
을 제외한 모든 문자와 매치 (ex.a.b
)*
: 앞에 있는 글자를 반복한 것 (ex.tomor*ow
)+
: 앞에 있는 글자를 최소 1회 이상 반복(*
이랑 뭔 차이…?){m.n}
: 반복 횟수를 지정 (ex.[0-9]{1,3}
: 1~3글자의 연속된 숫자 )?
: 반복 횟수가 1회|
:or
^
: not
- 파이썬에서 정규식 사용하기
import re
: 모듈 불러오기data = re.findall(r"(정규식)", 데이터소스)
: 데이터소스에서 정규식을 이용해 찾은 모든 data를data
변수에 저장함 → 이거 매우 잘 써먹을 수 있을 거 같다!re.search(위랑 동일)
: 일치하는 데이터 한 개만 찾는 함수
파이썬 아스키코드 함수
출처: https://ddolcat.tistory.com/684
왜?
어떻게?
너무 쉬워서 깜짝 놀람.
ord("문자열")
: 문자열을 아스키코드로 변환함
chr(아스키코드값)
: 아스키 코드 값에 상응하는 문자열을 반환함
백준 채점 결과 中 출력 초과
출처: https://help.acmicpc.net/judge/info
그냥 답이 틀린 것이라고 보면 됨(알고리즘 문제일 가능성 큼)
왜?
어떻게?
VS code 터미널 ↔ 에디터 창 단축키 설정하기: ctl + ;
출처: https://inpa.tistory.com/entry/VS-Code-⏱️-터미널-⭤-코드에디터-포커스-전환-단축키-설정
왜?
VScode 편집기에서 터미널이랑 에디터 창 포커스를 간편히 전환
어떻게?
- ctrl + shift + p → Open keyboard Shortcuts (JSON)
- 다음과 같이 작성 (나는 옵시디언 단축키랑 일치시키려고 alt + ;)
[
{
"key": "alt+;",
"command": "terminal.focus",
"when": "editorFocus"
},
{
"key": "alt+;",
"command": "workbench.action.focusActiveEditorGroup",
"when": "terminalFocus"
}
]
백준 달팽이 문제
출처: https://yoonsang-it.tistory.com/9
왜?
어떻게?
정상에 올라가면 멈춘다는게 포인트임!
구현 자체는 크게 어렵지 않은데, 생각해내는 것이 어렵다.
walrus 연산자 사용
출처: https://int-i.github.io/python/2020-05-29/python-walrus-operator/
무엇?
walrus 연산자는 :=
이렇게 생겼는데, 마치 바다코끼리 눈이랑 송곳니처럼 생겨서 이름이 walrus.
할당과 동시에 연산을 해주는 편한 연산자.
예전에 부스트코스에서 파이썬 스터디 할 때 라이브코치님이 한번 써보라고 알려 주셨던 것인데,
이번에 문제 풀면서 처음으로 사용해봤다.
어디서?
백준
골든바흐
종이자르기
어떻게
파티션 = [(abs(a-b), temp := sorted([a, b])) for a in 소수 for b in 소수 if a+b == 숫자]
이렇게 … 썼다.
(점선과점선번호 := [list(map(int, sys.stdin.readline().split())) for _ in range(int(sys.stdin.readline()))]).sort()
이렇게 쓰면 횟수 입력 + 횟수대로 입력 받기 + 정렬하기를 동시에 할 수 있었음 (근데 가독성은…)
백준 문제 입력 여러 줄 받기 간단하게!
출처: https://daebaq27.tistory.com/57
왜?
어떻게?
import sys
n,m = map(int, sys.stdin.readline().split())
arr = [list(map(int, sys.stdin.readline().split())) for _ in range(m)]
for _ in range(m)
구조는 처음 봤다 !!
'크래프톤정글 > TIL & WIL' 카테고리의 다른 글
크래프톤정글 2주차; TIL 3 - 힙, 힙 정렬, 우선순위 큐, 파이썬 deque, 파이썬 print 함수 옵션 (0) | 2022.11.08 |
---|---|
크래프톤정글 2주차; TIL 2 - 백준 곱셈 문제, 괄호의 값 문제 (0) | 2022.11.06 |
크래프톤정글 2주차; TIL 1 - 이진 탐색, 공유기 설치 문제, 함수와 분할정복, 이진 탐색 트리 (0) | 2022.11.06 |
크래프톤정글 1주차; 문제 풀면서 참고한 것 3 (0) | 2022.11.06 |
크래프톤정글 1주차; 문제 풀면서 참고한 것 2 (0) | 2022.11.06 |