300x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- dp
- 프로그래밍
- 백준
- 코딩
- linux
- 운영체제
- 그래프
- 딥러닝
- DFS
- google coding competition
- 순열
- 구글 킥스타트
- CSS
- 네트워크
- 알고리즘
- 코딩 테스트
- 동적 프로그래밍
- kick start
- 파이썬
- 리눅스
- 코딩테스트
- 동적프로그래밍
- nlp
- 킥스타트
- AI
- OS
- 프로그래머스
- BFS
- 브루트포스
- PYTHON
Archives
- Today
- Total
오뚝이개발자
[백준 1013] Contact 본문
728x90
300x250
문제
https://www.acmicpc.net/problem/1013
1013번: Contact
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤
www.acmicpc.net
나의 풀이
정규표현식을 사용하면 되는 문제이다. 약간 신경써야할 부분은 re의 match()함수가 아니라 fullmatch() 함수를 사용해야 한다는 점이다. match()의 경우 일치하는 부분문자열이 있는 경우 True를 return하지만 문제에서 요구하는 것은 문자열의 처음부터 끝까지 해당 정규표현식의 규칙을 가진 경우를 detection해야 한다. 따라서 fullmatch() 함수를 사용해 처음부터 끝까지 모두 해당 식과 일치하는 문자열을 골라 "YES"를 print해야 한다.
코드
# https://www.acmicpc.net/problem/1013
import re
T = int(input())
for _ in range(T):
a = input()
p = re.compile('(100+1+|01)+')
# p.match를 사용하면 안됨. 이 경우 처음부터 끝까지 문자열이 일치해야 하지만, p.match의 경우 부분적으로 일치하는 문자열이 있으면 True return
m = p.fullmatch(a)
if m:
print("YES")
else:
print("NO")
728x90
300x250
'코딩 테스트 > 백준' 카테고리의 다른 글
| [백준 1463] 1로 만들기 (0) | 2021.10.04 |
|---|---|
| [백준 1259] 팰린드롬 수 (0) | 2021.09.20 |
| 유레카 이론 (0) | 2021.07.13 |
| [백준 2252] 줄 세우기 (0) | 2021.07.04 |
| [백준 1937] 욕심쟁이 판다 (0) | 2021.07.03 |
Comments