728x90

 

안녕하세요!

 

오늘은 백준 문제 중에서 비교적 쉬운 문제로 꼽히는 **2675번 '문자열 반복'**을 풀어보겠습니다.

 

이 문제는 문자열을 주어진 횟수만큼 반복하여 출력하는 간단한 구현 문제입니다. 파이썬을 활용해 쉽게 접근할 수 있어요.

 

문제 설명

  • 각 테스트 케이스마다 주어진 문자열의 각 문자를 반복하여 새로운 문자열을 만드는 것이 목표입니다.
  • 입력으로는 몇 번 반복할 것인지와 문자열이 주어집니다.
  • 예를 들어, 3번 반복할 때 문자열이 "ABC"라면 "AAABBBCCC"가 출력되어야 합니다.

입력 형식

  1. 첫 번째 줄에는 테스트 케이스의 개수 T가 주어집니다.
  2. 각 테스트 케이스는 반복 횟수 R과 문자열 S로 구성됩니다.

출력 형식

  • 각 테스트 케이스마다 문자열 S의 각 문자를 R번 반복한 결과를 한 줄에 출력해야 합니다.

 

파이썬 코드 풀이

 

 

def repeat_string():
    t = int(input())
    for _ in range(t):
        r, s = input().split()
        r = int(r)
        result = ''.join([char * r for char in s])
        print(result)

if __name__ == "__main__":
    repeat_string()

 

코드 설명

  1. t = int(input()) : 테스트 케이스의 개수를 입력받습니다.
  2. for _ in range(t): : 입력된 테스트 케이스 수만큼 반복합니다.
  3. r, s = input().split() : 반복 횟수 r과 문자열 s를 입력받아 각각 변수에 저장합니다.
  4. r = int(r) : 반복 횟수를 정수형으로 변환합니다.
  5. result = ''.join([char * r for char in s]) : 문자열의 각 문자를 r번 반복하고 이를 join() 함수를 사용해 하나의 문자열로 결합합니다.
  6. print(result) : 최종적으로 반복된 문자열을 출력합니다.

 

감사합니다

728x90
반응형
728x90

 

문제 소개

백준 1436번 문제는 '숌' 감독이 좋아하는 숫자인 '666'이 포함된 영화 제목을 찾는 문제입니다. 간단히 말해, '666'이 연속적으로 포함된 숫자들을 찾는 것이 목표입니다. 예를 들어, 첫 번째 영화 제목은 666, 두 번째 영화 제목은 1666, 세 번째는 2666입니다. 이렇게 '666'이 들어가는 숫자를 순서대로 나열해 찾는 과정이 필요합니다.

문제 접근 방법

이 문제를 해결하기 위해서는 숫자를 하나씩 증가시키며 '666'이 포함되는지를 확인해야 합니다. 단순히 1부터 시작해 조건에 맞는 숫자를 찾을 때까지 반복하면 해결할 수 있죠. 이 과정에서 중요한 점은 어떤 데이터 구조나 알고리즘의 사용보다는, 반복문을 어떻게 효율적으로 작성하는가에 있습니다.

제가 사용한 접근 방법은 다음과 같습니다:

  1. 숫자 증가시키기: 시작은 666부터 합니다. 숫자를 하나씩 증가시키면서 '666'이 포함되는지를 체크합니다.
  2. '666' 포함 여부 확인: 파이썬에서는 문자열의 부분 문자열을 손쉽게 확인할 수 있기 때문에, 이를 이용해 조건을 만족하는 숫자를 찾습니다.
  3. N번째로 찾기: 문제에서 주어진 N번째 제목을 찾기 위해, 조건을 만족할 때마다 카운트를 증가시키고, 원하는 값에 도달하면 출력합니다.

코드 구현

n = int(input())
count = 0
num = 666

while True:
    if '666' in str(num):
        count += 1
        if count == n:
            print(num)
            break
    num += 1

 

이 코드의 핵심은 while 루프를 사용해 모든 숫자를 순차적으로 검사하는 것입니다. if '666' in str(num) 구문을 통해 현재 숫자가 '666'을 포함하고 있는지 여부를 확인할 수 있습니다. 조건을 만족할 때마다 카운트를 증가시키고, N번째 숫자에 도달하면 결과를 출력하는 방식입니다.

문제 해결 후 느낀 점

이 문제는 알고리즘의 복잡함보다는 기본적인 반복과 조건 확인을 얼마나 정확하게 구현할 수 있는지를 테스트하는 문제입니다. 코드를 작성하면서 '단순 반복문'이 얼마나 강력한 도구인지를 다시금 느꼈습니다. 또한, 문자열 조작이 문제 해결에 얼마나 유용한지를 깨닫게 되었죠.

728x90
반응형
728x90

Python을 활용한 웹 크롤링의 모든 것

웹 크롤링은 인터넷 상의 데이터를 자동으로 수집하고 분석하는 작업으로, 데이터 분석, 연구, 비즈니스 인사이트 등에 활용될 수 있습니다.

 

특히 Python은 다양한 라이브러리와 커뮤니티의 지원 덕분에 웹 크롤링을 수행하기에 최적의 언어로 꼽힙니다.

Python을 사용해 웹 크롤링을 시작하는 방법과 핵심 기술을 다루어보겠습니다.

 

 


1. 웹 크롤링의 기본 개념

 

웹 크롤링이란?

웹 크롤링은 프로그램이 웹사이트를 방문해 특정 정보를 추출하는 과정을 의미합니다.

흔히 사용되는 사례로는 상품 가격 비교, 뉴스 데이터 수집, 소셜 미디어 분석 등이 있습니다.

웹 크롤링의 작동 원리

웹 크롤러는 다음과 같은 과정을 따릅니다:

  1. HTTP 요청 보내기: URL을 통해 서버에 요청을 보냅니다.
  2. HTML 응답 받기: 서버로부터 HTML 문서를 수신합니다.
  3. 데이터 파싱: HTML 문서에서 원하는 데이터를 추출합니다.
  4. 저장: 추출한 데이터를 CSV, 데이터베이스 등에 저장합니다.

2. Python의 주요 웹 크롤링 도구

 

1) requests

requests는 HTTP 요청을 보내기 위한 라이브러리입니다. 웹페이지에 접속하여 HTML 문서를 가져오는 데 사용됩니다.

import requests

url = 'https://example.com'
response = requests.get(url)

if response.status_code == 200:
    print(response.text)  # HTML 내용 출력

 

2) BeautifulSoup

BeautifulSoup는 HTML 파싱을 돕는 라이브러리로, 특정 데이터 추출에 유용합니다.

 

from bs4 import BeautifulSoup

html = "<html><body><h1>안녕하세요</h1></body></html>"
soup = BeautifulSoup(html, 'html.parser')

print(soup.h1.text)  # "안녕하세요" 출력
 

3) Selenium

동적인 웹사이트를 크롤링할 때 사용되는 브라우저 자동화 도구입니다. 자바스크립트를 통해 생성된 데이터를 처리할 수 있습니다.

 

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://example.com')

print(driver.page_source)  # 렌더링된 HTML
driver.quit()

 


3. 간단한 웹 크롤링 예제

예제: 네이버 뉴스 헤드라인 가져오기

import requests
from bs4 import BeautifulSoup

url = 'https://news.naver.com/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

headlines = soup.select('.hdline_article_tit a')  # 네이버 뉴스의 헤드라인 CSS 클래스

for idx, headline in enumerate(headlines, 1):
    print(f"{idx}. {headline.text.strip()}")

 

 

파이썬 코드를 이렇게 작성하면 네이버 헤드라인을 뽑아올 수 있다.

728x90
반응형

+ Recent posts

728x90
반응형
728x90
반응형