티스토리 뷰
2019/11/10 - [Python/심사문제] - 파이썬 도장 심사문제(Unit 42) 풀이(judge_decorator.py)
문제
표준 입력으로 URL 문자열이 입력 입력됩니다. 입력된 URL이 올바르면 True, 잘못되었으면 False를 출력하는 프로그램을 만드세요. 이 심사문제에서 판단해야 할 URL의 규칙은 다음과 같습니다.
- http:// 또는 https://로 시작
- 도메인은 도메인.최상위도메인 형식이며 영문 대소문자, 숫자, -로 되어 있어야 함
- 도메인 이하 경로는 /로 구분하고, 영문 대소문자, 숫자, -, _, ., ?, =을 사용함
입력-결과 예시
입력 1
결과 1
True
입력 2
결과 2
False
해설
-
정규식을 사용해야 하므로 regular expression 모듈을 가져와야 한다.
import re
-
표준 입력으로 검사하고자 하는 주소를 입력받는다.
url = input()
-
문자열이 작성 서식에 일치하는지 알아보기 위해서 match() 함수를 이용한다.
re.match('작성 서식', '대상 문자열')
-
작성 서식을 정규식으로 표현한다.
-
http:// 또는 https://로 시작
-
^(http://|https://) 또는 ^http[s]*://
전자는 후자에 비해 길어 타이핑에 귀찮지만, 후자의 경우는 ’httpssss://’와 같은 오타를 걸러내지 못한다. 그러니 귀찮아도 전자가 더 안전한 방법이다. 문자열의 시작이기 때문에 시작임을 나타내는 ^를 사용하였다.
도메인은 도메인.최상위도메인 형식이며 영문 대소문자, 숫자, -로 되어 있어야 함. -
[a-zA-Z0-9-\.]+\.([a-zA-zZ0-9]+)/
최상위 도메인(TLD)의 형식이라는 게 ‘.com’ 또는 ‘.
~.com’이라고 본다. 영문 대소문자(a-ZA-Z), 숫자(0–9), 하이픈(-)를 허용하고 ’.com’ 앞에 ‘.(dot)‘이 오는 경우(www.)를 고려하여 허용 문자로 ’.‘도 추가한다. 이 문자들이 최소 1번 이상 출현해야 하므로 이 서석 뒤에 ’+’를 준다. 그 다음에 반드시 ’.’이 출현한 다음 다시 영문 대소문자, 숫자, 하이픈을 허용해야 한다. 최상위 도메인 다음은 슬러시(/)로 구분되므로 /까지 추가한다. 이때 입력이 http://www.gungmin.com과 같은 경우를 true로 처리하고자 한다면 마지막 슬러시는 (/)*로 바꾸어야 한다.
도메인 이하 경로는 /로 구분하고, 영문 대소문자, 숫자, -, _, ., ?, =을 사용함. -
[a-zA-Z0-9-=_,\./]*
이하 내용 역시 작성 서식에 따라 정규식을 작성하면 된다.(방법은 2를 참고). 최상위 정규식 다음 주소가 없을 수 있으므로 이 정규식 다음에는 *(0 이상 출현)을 붙인다. 슬러시(/)로 구분되는 세부 주소가 이어질 수 있다는 점에서 위에서 제시된 문자와 함께 슬러시(/)까지 허용 문자로 추가해야 한다는 점에 주의한다.
-
-
-
4에서 완성한
re.match('^(http://|https://)[a-zA-Z0-9-\.]+\.([a-zA-zZ0-9]+)/[a-zA-Z0-9-=_,\./]*', url)
를 if문으로 검사하여 참이면 result에 True를 넣고 거짓이면 result에 False를 넣는다. -
result를 출력한다.
소스 코드
1
2
3
4
5
6
7
8
9
|
import re
url = input()
result = None
if re.match('^(http://|https://)[a-zA-Z0-9-\.]+\.([a-zA-zZ0-9]+)(/)*[a-zA-Z0-9-=_,\./]*', url):
result = True
else:
result = False
print(result)
|
cs |
2019/11/10 - [Python/심사문제] - 파이썬 도장 심사문제(Unit 44) 풀이(judge_import.py)
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 고양이(10171번) (0) | 2019.12.11 |
---|---|
파이썬 도장 심사문제(Unit 41) 풀이(judge_coroutine.py) (0) | 2019.11.11 |
파이썬 도장 심사문제(Unit 44) 풀이(judge_import.py) (0) | 2019.11.10 |
파이썬 도장 심사문제(Unit 45) 풀이(judge_package.py) (0) | 2019.11.10 |
파이썬 도장 심사문제(Unit 42) 풀이(judge_decorator.py) (0) | 2019.11.10 |
- Total
- Today
- Yesterday
- QComboBox
- word
- words
- 북한말
- python3
- books
- judge
- 리찬규
- C
- PyQt5
- 유래
- 리규찬
- 백준
- QGridLayout
- MacOS
- 어원
- Python
- 소수
- locallibrary
- baekjoon
- BOJ
- setText()
- QtDesigner
- Mac
- tips
- django
- NK
- Tistory
- QLineEdit
- QLabel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |