새소식

PS/CodeUp

[CodeUp/3910] 전화번호 추출하기 (Python)

  • -

Problem : https://codeup.kr/problem.php?id=3910&rid=0

Status : Solved

Time : 00:14:55

 


 

문제 설명

 

더보기

여러 줄에 걸친 텍스트가 입력된다.

이 텍스트에 있는 모든 전화번호를 추출해보자.

전화번호의 형식은 다음과 같다.

dd-ddd-dddd
dd-dddd-dddd
ddd-ddd-dddd
ddd-dddd-dddd

여기서 d는 한 자리 숫자를 의미하며, 개수는 자릿수를 나타내며, -는 생략 될 수 있다.

즉, dd-ddd dddd나 ddd ddd dddd도 전화번호이다.(다른 경우도 마찬가지로 -는 생략가능함)

 

입력 및 출력

 

더보기

입력

첫 번째 줄에 입력 행 수 N이 입력된다.(N<=N<=120)

다음 N줄에 걸쳐 걸쳐 텍스트가 입력된다.

텍스트에 한글 문자는 없으며(영어,특수문자, 숫자,공백), 총 글자 수는 7,000 글자 이하이다.

 

출력

입력된 텍스트에 있는 모든 전화번호를 추출하여 한 줄에 하나씩 출력하시오. 단, 출력 할 때 원본에 있던 전화번호 형식을 그대로 출력하시오.

 

입력 예시

5

My List

Hong : 010-1234-5678

Kang : 010 122 3456

HAHA : 02-2345 1111

IOI : 123 456-7890

 

출력 예시

010-1234-5678

010 122 3456

02-2345 1111

123 456-7890

 

 


 

풀이

 

정규표현식 문제! 간단하게 풀이할 수 있다.

re.findall은 문자열에서 일치하는 패턴의 문자 전체를 반환하는 메소드로, 이 패턴을 문제 조건에 맞게 디자인하는 게 관건!

 

 

풀이 코드

import re

N = int(input())
for _ in range(N) :
  str = input().strip()
  match_group = re.findall(r'[0-9]{2,3}[-\s]{1}[0-9]{3,4}[-\s]{1}[0-9]{4}', str)
  for group in match_group :
    print(group)

풀이 완료!

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.