본문 바로가기

난 이 분야 전문가야!/Algorithm

프로그래머스 :: 쇠막대기 - python 풀이 공유

https://programmers.co.kr/learn/courses/30/lessons/42585

 

코딩테스트 연습 - 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레�

programmers.co.kr

 

<풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(arrangement):
    answer = 0
    cur_pipe = 0
    laser = False
    
    for i in range(len(arrangement)):
        if laser: 
            laser = False
            continue
        if arrangement[i] == '(':
            if arrangement[i + 1== ')':    # laser
                answer += cur_pipe
                laser = True
            else:
                cur_pipe += 1
        else:
            answer += 1
            cur_pipe -= 1
        
    return answer
cs

 

<느낀 점>

문제를 잘 이해하면 간단하게 풀 수 있는 문제다.

# 다른 사람의 풀이를 보며 신박했던 점은 조건문으로 레이저를 처리하지 않고

   파이썬 문자열 내장 함수인 replace를 사용하여 레이저를 간단히 처리했던 것

   ex) arrangement.replace('()', '0')

   함수 활용을 좀 더 잘해야겠다는 생각이 든다...

728x90