본문 바로가기

Algorithm/Baekjoon BOJ

[백준][파이썬] 2508번 : 사탕 박사 고창영(코드, 해설, 풀이)

반응형

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

 

2508번: 사탕 박사 고창영

창영이가 드디어 취직을 했다!! 그가 30세까지 취직을 안하던 이유는 바로 마음에 다니는 직장을 찾지 못해서였다. 이번에 창영이가 취직한 곳은 사탕 공장이다. 사탕 공장에 다니면 사탕 처럼

www.acmicpc.net

 

 

 

 


- 문제

  사탕의 모양이 나타나는 횟수를 출력하는 문제다. 접근 방법을 생각해보면 '>'라는 문자를 발견하면 해당 문자 이후의 두 개의 문자가 'o' 그리고 '<'이면 +1을 하면 될 것이고, 'v'라는 문자를 발견하면, 해당 문자로부터 아래로 두칸 가는 동안 'o'와 '^'가 있으면 +1을 하면 될 것 같다.


- 해설

  해당 문자열을 입력받은 이후 모든 문자열에 대해서 '>o<' 혹은 세로로 'vo^'가 나오는 지 확인하고 해당하면 +1을 하여 최종 개수를 출력하였다.

 


- 풀이

import sys
T = int(sys.stdin.readline())
for _ in range(T):
    sys.stdin.readline()
    A = []
    count = 0
    r, c = map(int, sys.stdin.readline().split())
    for _ in range(r):
        A.append(sys.stdin.readline())
    for i in range(r):
        for j in range(c-2):
            if A[i][j] == '>' and A[i][j+1] == 'o' and A[i][j+2] == '<':
                count += 1
    for i in range(r-2):
        for j in range(c):
            if A[i][j] == 'v' and A[i+1][j] == 'o' and A[i+2][j] == '^':
                count += 1
    print(count)

  문제 해설이랑 다를게 없는데, for문의 range, 즉 범위를 유의해서 봐야한다. j를 +1, 그리고 +2하면서 확인할 때는 총 range에 -2를 해서 list의 범위를 초과하지 않도록 하고, 마찬가지로 i의 경우에도 -2를하여 범위를 초과하지 않도록 해야한다.

반응형