본문 바로가기

problem solving/Problem Solving

Google Code Jam 2009 - Round1B 복습


http://code.google.com/codejam/contest/dashboard?c=186264
#


A.Decision Tree

Decision Tree가 아래의 포맷으로 주어진다.
(0.2 furry
  (0.81 fast
    (0.3)
    (0.2)
  )
  (0.1 fishy
    (0.3 freshwater
      (0.01)
      (0.01)
    )
    (0.1)
  )
)
좀 더 문법적으로 설명하면 주어지는 Tree는 아래의 정규식 문법을 따른다
tree ::= (weight [feature tree tree])
weight is a real number between 0 and 1, inclusive
feature is a string of 1 or more lower case English letters
이 Decision Tree는 어떤 동물이 얼마나 귀여운지를 판단하는 트리이다. 
트리의 노드는 '(' 와 ')' 로 둘러쌓여있다. 각 노드는 0과 1사이의 가중치를 가지며 속성을 가질 수 있다. 노드가 속성을 가지는 두 개의 child node를 가진다.

어떤 동물의 귀여운 정도를 구하는 방법은 간단하다. 우선 귀여운 정도 = 1.0 으로 루트노드로 부터 시작한다. 동물의 귀여운 정도는 만나는 노드의 가중치와 곱해진다. 만약 동물의 속성과 노드의 속성이 일치하면 그 노드의 왼쪽 자식 노드로 분기하며 그렇지 않은 경우 오른쪽으로 분기한다. 더 이상 분기할 자식노드가 없을 때 귀여운 정도가 그 동물의 귀염성을 나타낸다.

예를 들어 위 decision tree에서 furry와 freshwater 라는 속성을 가지는 동물은 귀염성은, 우선 루트노드에서 귀염성=1.0 으로 시작한다. 루트노드의 가중치가 0.2 이므로 이 동물의 귀염성은 0.2가 된다. 루트노드의 속성인 furry와 이 동물의 속성이 일치하므로 왼쪽 자식으로 분기한다. 이 노드의 가중치가 0.81이므로 이 동물의 귀염성은 0.2 * 0.81 =  0.162 가 된다. 이 노드의 속성 fast와 이 동물의 속성이 일치하지 않으므로 오른쪽으로 분기한다. 이 노드의 가중치는 0.2이므로 최종적으로 이 동물의 귀염성은 0.0324가 된다.

인풋으로 결정트리와 동물의 속성이 주어지면 이 동물의 귀염성을 계산하라.



B. The Next Number

1에서 9까지의 디지트를 각각 Di개(1 <= i <= 9) 를 갖는 숫자의 리스트가 있다. 예를 들어 115, 151, 511, 1015, 1051, ... 은 모두 '1'을 두 개, '5'를 한 개 가진 숫자의 리스트의 원소이다.
어떤 숫자 N이 주어졌을 때, 이 숫자가 속한 리스트에서 N다음에 오는 숫자를 구하여라.




C. Square Math

아래와 같은 W*W 크기의 보드가 주어진다.
2+3
+4-
1+0
보드의 각 칸은 한자리의 숫자이거나 + 혹은 - 이다.

이 보드의 숫자칸 중 아무자리에서나 시작해서 상하좌우 4방향 중 한 방향으로 아무렇게나 이동하여 식을 써 나간다. 예를 들어 위 그림에서 첫번째 칸에서 시작하여 오른쪽으로 두칸 간 뒤 아래로 한 칸 가고 왼쪽으로 한 칸 가면, 식 '2+3-4'가 완성된다.

보드와 숫자 Q가 주어졌을 때, 보드위에서 이런식으로 이동하여 얻을 수 있는 식의 계산 결과가 Q와 일치하는 식을 구하여라. 만약 답이 여러개 존재하면 그 중 가장 짧은 식을 구하여라. 이 마저도 여러개가 존재하면, 사전순으로 가장 앞서는 식을 구하여라.

Large dataset

2 ≤ W ≤ 20
1 ≤ Q ≤ 50
1 ≤ each query ≤ 250


'problem solving > Problem Solving' 카테고리의 다른 글

Google Code Jam 2009 - Round1C 복습  (1) 2009.09.21
Google Code Jam 2009 - Round1A 복습  (0) 2009.09.15
Tight words  (0) 2008.10.16
Freckles  (0) 2008.10.16
Vase collection  (0) 2008.10.16