백준(Python) 풀이/수학

백준(Python) 1864번 문어 숫자 풀이

개발윗미 2021. 11. 14. 10:23

Python으로 구현한 1864번 문어 숫자 문제 풀이입니다.

 

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

 

1864번: 문어 숫자

해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야

www.acmicpc.net


while True :
  value = input()
  if value == '#' :
    break
  result = 0
  number = -1
  for i in range(len(value)-1, -1, -1) :
    if value[i] == '-' :
      number += 1
    elif value[i] == '\\' :
      number += 1
      result += 8 ** number
    elif value[i] == '(' :
      number += 1
      result += 2 * (8 ** number)
    elif value[i] == '@' :
      number += 1
      result += 3 * (8 ** number)
    elif value[i] == '?' :
      number += 1
      result += 4 * (8 ** number)
    elif value[i] == '>' :
      number += 1
      result += 5 * (8 ** number)
    elif value[i] == '&' :
      number += 1
      result += 6 * (8 ** number)
    elif value[i] == '%' :
      number += 1
      result += 7 * (8 ** number)
    else :
      number += 1
      result += -1 * (8 ** number)

  print(result)

 

1. 입력받은 문자가 '#'일 때까지 while문을 통해 반복 수행한다.

 

2. 반복문을 통해 입력받은 문자열을 거꾸로 하나씩 확인하여 해당되는 문자에 대하여 number값을 1 증가시키고

 

   문제에서 제시한 각 기호에 대응하는 숫자에 8진법 계산형식을 적용하여 result에 누적한다.

 

3. 문자열에 존재하는 모든 문자를 하나씩 모두 확인하여 수행한 뒤 최종적으로 result를 출력한다.