새소식

⌨️ Algorithms/백준

[Python] 백준 7567번_그릇

2023. 2. 2. 19:35

  • -

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

 

7567번: 그릇

그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다.

www.acmicpc.net

 

  • 그릇을 바닥에 놓았을 때 그 높이는 10cm
  • 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가
  • 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어남
  • 그릇을 괄호 기호로 나타내어 설명
  • 편의상 그릇이 쌓여지는 방향은 왼쪽에서 오른쪽이라고 가정
  • 그림에서 ‘(’은 그릇이 바닥에 바로 놓인 상태를 나타내며, ‘)’은 그릇이 거꾸로 놓인 상태
  • 만일 그릇이 포개진 모양이 ((((와 같다면 전체의 높이는 25cm
    • 처음 바닥에 있는 그릇의 높이가 10cm
    • 이후 같은 방향으로 3개의 그릇이 포개져 있으므로 늘어난 높이는 5+5+5=15
  • ()()와 같은 경우라면
    • 높이는 10*4=40cm
  • 입력에 주어진 모양대로 그릇을 쌓을 때 최종의 전체 그릇 높이를 계산
  • 처음 입력으로 주어진 각 그릇의 방향은 바꿀 수 없음
  • 입력
    • 첫 줄에는 괄호문자로만 이루어진 문자열이 주어짐
    • 입력 문자열에서 열린 괄호 ‘(’은 바로 놓인 그릇, 닫힌 괄호 ‘)’은 거꾸로 놓인 그릇을 나타냄
    • 문자열의 길이는 3이상 50 이하
  • 출력
    • 그릇 방향이 괄호 문자로 표시된 문자열을 읽어서 그 최종의 높이를 정수로 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

(예제 입력 1) 
(((( -> 25

(예제 입력 2)
()()()))( -> 80
"""

 

 

## 의사코드 ##

# res = 10 # 처음 놓인 그릇의 높이

# for i in range(1, len(plates)): # 인덱스 0(맨 처음 놓인 그릇)을 제외한 나머지 그릇
#     # 현재 그릇이 '('인 경우 
#     if plates[i] == '(':
#         if plates[i-1] == '(':
#             res += 5
#         else:
#             res += 10 
#     # 현재 그릇이 ')'인 경우 
#     else:
#         if plates[i-1] == ')':
#             res += 5
#         else: 
#             res += 10

 

 

 

통과한 코드

 

plates = str(input()) 
res = 10 # 맨 처음 놓인 그릇의 높이

# 인덱스 0(맨 처음 놓인 그릇)을 제외한 나머지 그릇
for i in range(1, len(plates)): 
    # 현재 그릇이 '('인 경우 
    if plates[i] == '(':
        if plates[i-1] == '(':
            res += 5
        else:
            res += 10 
    # 현재 그릇이 ')'인 경우 
    else:
        if plates[i-1] == ')':
            res += 5
        else: 
            res += 10 

print(res)

 

 

  • 과정 확인
plates = "()()()))("

"""
i: 1
plates[i]: )
plates[i-1]: (
res: 20 

i: 2
plates[i]: (
plates[i-1]: )
res: 30 

i: 3
plates[i]: )
plates[i-1]: (
res: 40 

i: 4
plates[i]: (
plates[i-1]: )
res: 50 

i: 5
plates[i]: )
plates[i-1]: (
res: 60 

i: 6
plates[i]: )
plates[i-1]: )
res: 65 

i: 7
plates[i]: )
plates[i-1]: )
res: 70 

i: 8
plates[i]: (
plates[i-1]: )
res: 80 

80
"""

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!