[백준 30402] 감마선을 맞은 컴퓨터 / 파이썬

권한·2025년 12월 24일

BOJ

목록 보기
10/40

입력으로 주어진 사진이 어떤 고양이의 사진인지 구분하는 문제이다.
w가 존재한다면 춘배, b라면 나비, g라면 영철의 사진이다. 고양이는 무조건 한마리만 나온다는 조건이 있다. 그렇다면 쉽게 풀 수 있다.

  1. 입력이 많으므로 sys로 입력받는다. 공백으로 구분되어 주어지므로 replace로 공백 제거
  2. 입력에서 w, b, g가 존재한다면 cat에 각 고양이 저장, 후 출력
    순으로 코드를 구현하면 되겠다.
import sys

img = ""
for i in range(15):
	img += sys.stdin.readline().replace(" ", "")

if "w" in img:
    cat = "chunbae"
elif "b" in img:
    cat = "nabi"
elif "g" in img:
    cat = "yeongcheol"
print(cat)

💡 replace와 re.sub
replace()는 특정 부분 문자열을 다른 문자열로 대체한다.
re.sub()의 경우 정규표현식(패턴)과 일치하는 부분을 찾아 지정 문자열로 대체한다.

💡 find와 index

  • 값이 존재하지 않는다면 find는 -1을 리턴, index는 ValueError가 발생한다.
  • find는 문자열에서만, index는 인덱스로 접근할 수 있는 자료형에서 사용가능하다.
  • 매개변수는 (찾을 문자열, 시작위치, 종료위치)이다. 찾을 문자열은 필수다.

2차원 배열을 사용할 수도 있다.

l = [list(input().split()) for _ in range(15)]
l = [l[i][j] for i in range(15) for j in range(15)]
print('chunbae' if 'w' in l else 'nabi' if 'b' in l else 'yeongcheol')
triggers = ['w', 'b', 'g']
cat = ['chunbae', 'nabi', 'yeongcheol']
trigger = False

while not trigger:
    pixels = input().split()
    for p in pixels:
        if p in triggers:
            print(cat[triggers.index(p)])
            trigger = True
            break


이렇게 코드를 짜게되면 w를 만나는 순간 더 이상 입력을 받지 않게된다.

profile
티스토리로 옮김

0개의 댓글