일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스파크
- 문법
- 이클립스
- SQL
- 파이썬
- 스프링
- 데이터프로그래밍
- 프로그래머스
- 코딩테스트
- 빅데이터
- 리눅스마스터 2급 2차
- SQL 문법
- 알고리즘
- 해킹실습
- 프로그래밍
- 필기
- 기초
- 스프링부트
- 문제풀이
- 백준
- 토이프로젝트
- 모의해킹
- 엘라스틱서치
- SQL 정리
- 데이터베이스
- 오라클
- c언어
- 자바
- 위클리챌린지
- MySQL
- Today
- Total
개발일기
백준 1864번 파이썬 풀이 : 문어 숫자 본문
문제 링크 : https://www.acmicpc.net/problem/1864
1864번: 문어 숫자
해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야
www.acmicpc.net
문제
해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야에 일대 혁명을 불러왔다. 이 무늬의 정체는 바로 문어가 숫자를 적는 방법이라는 것이 해양 생물학자들에 의해 밝혀진 것이다. 학자들은 문어가 무엇을 세는 것인지는 아직 알 수 없지만, 수 표기법을 해독하는 데에는 성공했다.
뭍 위에 사는 이들에게는 문어가 쓰는 숫자와 그를 표현하는 잔물결 무늬가 매우 낯설 수밖에 없다. 따라서 연구자들은 다음과 같은 기호로 잔물결 무늬를 적기로 합의했다. 각 기호와 대응하는 숫자는 다음과 같다.
- -는 0에 대응한다.
- \는 1에 대응한다.
- (는 2에 대응한다.
- @는 3에 대응한다.
- ?는 4에 대응한다.
- >는 5에 대응한다.
- &는 6에 대응한다.
- %는 7에 대응한다.
- /는 -1에 대응한다.
해양 신경학자들은 특히 음수를 나타내는 기호가 있다는 사실에 흥분하면서, 아직 걸음마 단계인 두족류 신경학이 이 발견을 계기로 크게 발전하기를 기대하고 있다.
당연히 문어의 수 체계는 8진법에 기반한다. 예를 들면 다음과 같다.
(@&는 2 × 82 + 3 × 8 + 6 = 158이다.
?/--는 4 × 83 + −1 × 82 + 0 × 8 + 0 = 1984이다.
/(\는 −1 × 82 + 2 × 8 + 1 = −47이다.
당신에게 주어진 문제는 문어 숫자를 입력 받아 십진수로 나타내는 것이다.
입력
한 줄에 하나씩 문어 숫자가 입력으로 주어진다. 각 숫자는 최소 한 개, 최대 여덟 개의 문어 숫자 기호로 이루어져있다. 입력으로 '#'이 들어오면 입력을 종료한다.
출력
입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.
# 문제 풀이 ( 알고리즘 분류 : 수학, 구현, 사칙연산 )
이번 문제는 단순 수학 계산과 구현 문제 였기 때문에 쉬운 축에 속하지만
추석이기도 하고 느낌을 잃지 않기 위해 풀어 보았다.
기호와 대응하는 숫자를 표현할 때 두가지 방법을 사용할 수 있다.
딕셔너리를 사용하여 key value를 사용해도 되고 배열에 모든 문자를 전부 넣고 index - 1 로 하여 사용하면 된다.
1
2
3
4
5
6
|
while True:
string = input()
string_len = len(string)
answer = 0
if string == "#":
break
|
cs |
string 변수로 문자열을 입력 받으며 입력받은 문자열이 # 이면 break를 통해 반복문을 탈출 프로그램을 종료한다.
1
2
3
|
for i in string:
answer += (string_dict.index(i) - 1) * (8 ** (string_len - 1))
string_len -= 1
|
cs |
입력받은 문자열을 하나씩 꺼내어 배열.index를 사용 index 번호를 추출 하고 계산하여 answer에 더해준다.
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 2506번 파이썬 문제풀이 : 점수계산 (0) | 2021.09.23 |
---|---|
백준 2490번 파이썬 풀이 : 윷놀이 (0) | 2021.09.23 |
백준 1371번 파이썬 풀이 : 가장 많은 글자 (0) | 2021.09.21 |
백준 1718번 파이썬 풀이 : 암호 (0) | 2021.09.20 |
백준 1236번 파이썬 풀이 : 성 지키기 (0) | 2021.09.17 |