이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

백준 9342 - 염색체 (파이썬)

  • 2025.02.25 14:51
  • Programming/백준
글 작성자: pental

분류 : 문자열 + 정규 표현식

https://www.acmicpc.net/problem/9342

풀이

  1. 먼저 T를 입력받아 테스트 케이스 개수를 정함
  2. T만큼 반복하면서 문자열 S를 입력받음
  3. 기본적으로 문자열 S의 길이가 3미만이면 패턴을 만족할수 없으므로 “Good”을 출력하고 다음 반복으로 넘어감
  4. 첫문자가 “A”가 아니라면 “A”, “B”, “C”, “D”, “E”, “F”에 속하는지 확인
  5. 만약 속하지 않는다면 “Good”을 출력하고 다음 반복으로 넘어감
  6. 만약 속한다면 이를 제거하고 진행한다.
  7. 마지막 문자를 먼저 확인해 “C”가 아니라면 “A”, “B”, “C”, “D”, “E”, “F”에 속하는지 확인
  8. 속하지 않는다면 “Good”을 출력하고 다음 반복으로 넘어감
  9. 만약 속한다면 이를 제거하고 진행한다.
  10. 여기서 T라는 새로운 문자열을 만들어 연석된 동일한 문자가 나오면 한번만 기록
  11. for i in range(len(S)) : if i == 0 or S[i] != S[i - 1] : T += S[i]
  12. 추출된 새로운 문자열이 “AFC”면 “Infected!”를 출력 , 아니면 “Good”을 출력

사실 정규표현식으로 처리가 가능하다.

^[A-F]?A+F+C+[A-F]?$
import re

pattern = re.compile(r'^[A-F]?A+F+C+[A-F]?$')

T = int(input())
for _ in range(T):
    S = input().strip()
    
    if pattern.fullmatch(S):
        print("Infected!")
    else:
        print("Good")

코드

# 백준 9342 - 염색체
# 분류 : 문자열

T = int(input())
for _ in range(T):
    S = input()
    if len(S) < 3 :
        print("Good")
        continue
    
    if S[0] != "A" :
        if S[0] not in ["A", "B", "C", "D", "E", "F"] :
            print("Good")
            continue
        S = S[1:]
    
    if S[-1] != 'C' :
        if S[-1] not in ["A", "B", "C", "D", "E", "F"] :
            print("Good")
            continue
        S = S[:-1]
    
    T = ""
    for i in range(len(S)) :
        if i == 0 or S[i] != S[i - 1] :
            T += S[i]
    
    if T == "AFC" :
        print("Infected!")
    else :
        print("Good")
저작자표시 비영리 (새창열림)

'Programming > 백준' 카테고리의 다른 글

백준 14502 - 연구소 (파이썬)  (0) 2025.02.26
백준 6064 - 카잉 달력 (파이썬)  (1) 2025.02.25
백준 2015 - 수들의 합 4 (파이썬)  (0) 2025.02.24
백준 20365 - 블로그2 (파이썬)  (0) 2025.02.24
백준 10844 - 쉬운 계단 수 (파이썬)  (0) 2025.02.23

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 백준 14502 - 연구소 (파이썬)

    백준 14502 - 연구소 (파이썬)

    2025.02.26
  • 백준 6064 - 카잉 달력 (파이썬)

    백준 6064 - 카잉 달력 (파이썬)

    2025.02.25
  • 백준 2015 - 수들의 합 4 (파이썬)

    백준 2015 - 수들의 합 4 (파이썬)

    2025.02.24
  • 백준 20365 - 블로그2 (파이썬)

    백준 20365 - 블로그2 (파이썬)

    2025.02.24
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (452)
    • Forensics (105)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (24)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (260)
      • C (10)
      • Python (11)
      • 백준 (206)
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 백준
  • 프로그래머스
  • 포렌식
  • 파이썬
  • 디지털포렌식
  • pental
  • Forensics
  • axiom
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바