白駿Baekjoon 1864タコ数字-JAVA


https://www.acmicpc.net/problem/1864
質問する
長い間、海流が遅く、底生生物が少ない海底でしか発見されなかった波紋の正体は、海洋学者たちの謎だった.しかし、最近の研究成果は動物言語学分野の革命を引き起こした.海洋生物学者は、この模様の正体がタコが数字を書く方法であることを発見した.学者たちはタコが何を数えているのかまだ知らないが、数表法の解読に成功した.
陸上に暮らす人々にとって、タコが使う数字とその波紋を表現する図案はよく知られていない.そのため、研究者たちは以下の記号で波紋を記録することに同意した.各記号に対応する数字は次のとおりです.
-0に対応します.
は1に対応します.
(2に対応します.
@は3に対応します.
?4に対応します.
5に対応します.
&対応6.
%は7に対応する.
/対応-1.
海洋神経学者たちは特に興奮して飲料水の嗜好を発見し、まだスタート段階にある頭足類神経学がこの発見をきっかけに成長することを期待している.
もちろん、タコの水系は8進法に基づいています.例:
(@&は2× 82 + 3 × 8+6=158.
?/--を選択).× 83 + −1 × 82 + 0 × 8+0=1984.
\× 82 + 2 × 8+1=47です.
あなたに質問するのはタコの数字を入力して、10進数で表します.
入力
各行にタコの数字を入力します.各数字は少なくとも1つ、最大8つのタコ数字記号から構成されている.「#」を入力すると、入力を終了します.
しゅつりょく
各行に入力されたタコの数字に対応する10進数を出力します.
入力例1
(@&
?/--
/(\
?
#
サンプル出力1
158
1984
-47
4
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);

		Map<String, Integer> map = new HashMap<>();
		map.put("-", 0);
		map.put("\\", 1);
		map.put("(", 2);
		map.put("@", 3);
		map.put("?", 4);
		map.put(">", 5);
		map.put("&", 6);
		map.put("%", 7);
		map.put("/", -1);

		while (true) { // 라인별 접근을 위한 순한
			String N = sc.nextLine(); // 라인별 접근
			if (N.equals("#")) // 만약 0이라면
				System.exit(0); // 시스템 강제 종료 코드

			String[] arr = N.split(""); // 해당 문자열 한글자씩 배열 생성

			int sum = 0;
			int num = 0;
			for (int i = 0; i < arr.length; i++) {
				sum += map.get(arr[i]) * Math.pow(8, arr.length - 1 - i);
			}
			System.out.println(sum);
//	2022-05-02~2022-05-08.md
		}
	}
}
  • 説明
  • javaは(反スラッシュ)を読めません.だからマークで読めるのは
  • です
  • Math.pow(8,n)を用いて平方数
  • を実現した.