다이얼 (5622)

Created:

Baekjoon No.5622 문제
Baekjoon No.5622 예제
이 문제는 일반 배열을 사용해도 되지만 key-value 배열을 사용해도 된다.

Bash

Bash
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
declare -A arr=(
	[1]=
	[2]=ABC
	[3]=DEF
	[4]=GHI
	[5]=JKL
	[6]=MNO
	[7]=PQRS
	[8]=TUV
	[9]=WXYZ
	[0]=
)
t=0
read str
while [ "$str" != "" ]; do
	x=${str::1}
	for i in {0..9}; do
		if [[ "${arr[$i]}" =~ "$x" ]]; then
			((t += i+1))
			break
		fi
	done
	str=${str:1}
done
echo $t

Bash에서는 key-value 배열을 생성하려면 변수 타입을 지정해주는 declare 명령어를 사용해야 한다.
declare 명령어의 옵션 A가 key-value 배열을 생성해주는 옵션이며, [key]=value로 키와 값을 매핑한다.

Node.js

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
arr = {
	A: 2, B: 2, C: 2,
	D: 3, E: 3, F: 3,
	G: 4, H: 4, I: 4,
	J: 5, K: 5, L: 5,
	M: 6, N: 6, O: 6,
	P: 7, Q: 7, R: 7, S: 7,
	T: 8, U: 8, V: 8,
	W: 9, X: 9, Y: 9, Z: 9
}

let t = 0
let str = require("fs").readFileSync(0).toString().trim().split("");
for (let x of str) {
	t += arr[x]+1;
}
console.log(t);

key와 value의 위치를 바꾸면 배열의 길이는 길어지지만 시간을 구하는 코드는 짧아진다.

Python3

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
arr = {
	1: "",
	2: "ABC",
	3: "DEF",
	4: "GHI",
	5: "JKL",
	6: "MNO",
	7: "PQRS",
	8: "TUV",
	9: "WXYZ",
	0: ""
}

t = 0
a = input()
for x in a:
    for k in arr:
        if x not in arr[k]: continue
        t += k+1
        break
print(t)

Python은 key-value 배열으로 for문을 사용하면 key값이 반복된다.

Ruby

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
arr = {
  "A" => 2, "B" => 2, "C" => 2,
  "D" => 3, "E" => 3, "F" => 3,
  "G" => 4, "H" => 4, "I" => 4,
  "J" => 5, "K" => 5, "L" => 5,
  "M" => 6, "N" => 6, "O" => 6,
  "P" => 7, "Q" => 7, "R" => 7, "S" => 7,
  "T" => 8, "U" => 8, "V" => 8,
  "W" => 9, "X" => 9, "Y" => 9, "Z" => 9
}

t = 0
str = gets.chomp.split("")
for x in str
  t += arr[x]+1
end
puts t

Ruby의 Key와 value를 매핑할 때 화살표를 사용한다.