본문 바로가기

python

(47)
[백준/파이썬] 17413번: 단어 뒤집기 2 (Python) 문제 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 - 구현, 문자열 최근 정규표현식을 배워 정규표현식으로 문제를 풀었다. 로 이루어진 문자열과 그 이외의 문자열을 나누었다. |[a-zA-Z0-9 ] 는 또는 대소문자or숫자or공백으로 이루어진 문자를 매치시킨다. findall을 이용해 tag를 검색하면 ['', 't', 'a', 'g', ''] 형태로 추출이 된다. 반복을 통해 인 경우, 역순 없이 결과..
[Python] 정규표현식5 - 컴파일 옵션 (DOTALL, IGNORECASE, MULTILINE) 정규표현식 - 컴파일 옵션 re.DOTALL, re.S : .(메타문자)가 \n을 포함한 모든 한 문자와 일치하는지 검사 import re pat1 = re.compile('a.b') pat2 = re.compile('a.b', re.DOTALL) print(pat1.match("a\nb")) print(pat2.match("a\nb")) 결과 None re.IGNORECASE, re.I : 대소문자를 무시하고 일치하는지 검사 pat = re.compile("yes", re.IGNORECASE) print(pat.match("yes")) print(pat.match("Yes")) print(pat.match("yES")) print(pat.match("YES")) 결과 re.MULTILINE, re.M ..
[Python] 정규표현식3 - Dot(.), 반복(*, +, {m,n}) 정규표현식 Dot(.) 줄바꿈 문자인 \n (Enter)을 제외한 모든 문자와 매치됨을 의미한다. a.b : a와 b사이에 어떤 문자가 들어와도 매치된다 import re pat = re.compile("a.b") print(pat.match('a3b')) # 일치 print(pat.match('aAb')) # 일치 print(pat.match('a b')) # 일치 print(pat.match('a\tb')) # 일치 print(pat.match('a@b')) # 일치 print(pat.match('abc')) # 불일치(a로 시작해서 b로 끝나지 않음) print("-------------------------------") # 문자 ' .' 을 찾을 때 pat1 = re.compile("a[.]b"..
[Python] 정규표현식2 - 문자열 매치 [ ] 문자 클래스 [ ] 문자 클래스로 만들진 정규식은 "[ ] 사이의 문자들과 매치" 라는 의미를 갖는다. [ ] 안에는 어떤 문자도 들어갈 수 있다. [abc] : a, b, c중 한 개의 문자와 매치 예제1 import re pat = re.compile('[abc]') # match : 문자열의 처음부터 일치하는지 확인 print(pat.match('a')) # 일치 print(pat.match('before')) # 일치 print(pat.match('dude')) # 불일치 결과 None 예제2 # ['file1', 'file3', 'file5', 'file7' ] pat2 = re.compile('file[1357]') print(pat2.match('file1')) # 일치 print(pat2...
[백준/파이썬] 10816번: 숫자 카드 2 (Python) 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 - 자료구조, 이분탐색, 해시를 사용한 집합과 맵 상근이가 가지고 있는 숫자의 카드를 개수와 함께 딕셔너리에 담는다. 상근이가 가지고 있는 숫자 카드가 6 3 2 10 10 10 -10 -10 7 3 일 경우 딕셔너리에는 {6: 1, 3: 2, 2: 1, 10: 3, -10: 2, 7: 1} 로 담기게 된다. 주어진 숫자카드를 딕셔너리에서 key값을 찾..
[백준/파이썬] 11650번: 좌표 정렬하기 (Python) 문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 - 정렬 리스트에 담아서 lambda표현식으로 정렬했다. 코드 arr = [] for _ in range(int(input())): arr.append(list(map(int, input().split()))) # arr[0]기준 오름차순 -> arr[1]기준 오름차순 arr.sort(key=lambda x: (x[0], x[1]))..
[백준/파이썬] 10814번: 나이순 정렬 (Python) 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 - 정렬 나이, 이름, 인덱스를 리스트에 담아서 lambda표현식으로 정렬했다. 처음에 나이를 문자열로 받아 정렬시켰더니 오답이었다. 나이는 숫자로 형변환 뒤 정렬시켜 주었다. 코드 arr = [] for i in range(int(input())): # 나이, 이름 str1 = list(map(str, input().split())) # 인덱스 str1.append(i) # [나이, 이름,..
[Python] 정규표현식 1 정규 표현식 복잡한 문자열을 처리할 때 사용하는 기법이다. 정규 표현식은 줄여서 정규식이라고도 한다. 파이썬의 정규표현식을 사용하는 방법 1. 정규표현식 모듈 불러오기 import re 2. 정규표현식 패턴 생성하기 pattern = re.compile('패턴') 3. 패턴으로 문자열을 검색(확인) 3-1. 문자열의 처음부터 일치하는지 확인 pattern.match('문자열') 3-2. 문자열의 전체의 일부 일치하는지 확인 pattern.search('문자열') 3-3. 문자열의 전체에서 일치하는지 확인 후 모두를 목록(배열)화 pattern.findall('문자열') import re # 영어 소문자가 최소 1번이상 나열되는 패턴 pat = re.compile("[a-z]+") match : 처음부터 ..