알고리즘 트레이닝/Dynamo로 푸는 백준

Dynamo로 풀어보자-백준 3003번(킹, 퀸, 룩, 비숍, 나이트, 폰)

hnanmal 2022. 12. 24. 00:08
300x250

다이나모로도 알고리즘 문제들을?

다이나모를 사용해서 알고리즘 문제를 풀 수 있다는 사실을 보이고 싶었습니다.

비주얼 프로그래밍 툴이기는 하지만, 꽤 복잡한 수준의 논리 구성을 구현할 수 있는데도, 아직도 사용자는 그리 많지 않은 것 같습니다. (레빗을 사용하는 인원 풀 중에서도 일부만 사용하고 있으니 사용자가 적은 것은 사실 당연합니다. 하지만 다이나모 샌드박스를 고려하면, 레빗을 사용하지 않는 사람이라도 다이나모를 엑셀 등과 연계하여 얼마든지 유용하게 사용할 수 있습니다. 비주얼 프로그래밍 툴이라는 특성상, 초기 프로그램 스케치에 탁월한 능력을 보여줍니다.)

앞으로는 쉬운 난이도부터 차근차근 어려운 난이도 까지 백준 온라인 저지 사이트의 문제들을 다이나모로 풀어보는 게시물 시리즈를 종종 올려볼까 합니다.

문제 및 입력 조건

3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰

 

 

 

다이나모 풀이

 

전체 풀이의 모습은 상기 스샷과 같습니다.

 

 

입력부

 

입력기준에 설명된 것처럼, 킹, 퀸, 룩, 비숍, 나이트, 폰 의 순서대로 동혁이가 발견한 흰색 피스들의 숫자들이 주어집니다. 주어지는 순간부터 딕셔너리 형태로 데이터를 정리해 둡니다.

 

 

 

기준 정리하기

발견한 갯수의 정합성을 판단하기 위해서는, 체스 게임 오리지널의 종류 별 피스 숫자도 정리가 되어있어야 합니다.

 

 

 

 

 

필요한, 혹은 남는

동혁이가 발견한 종류별 체스 피스의 숫자가 남는지, 부족한지는 기준이 되는 수에서 발견한 수를 빼면 되는 아주 쉬운 문제죠.

 

“Dictionary.Components” 노드를 통해 기준이 되는 딕셔너리 데이터를 키와 밸류값으로 잠깐 분리해 둔 다음, 기준의 키값들을 모은 리스트를 획득한 갯수 딕셔너리 쪽으로 보내주어, 양쪽 딕셔너리에서 동일한 순서로 피스들의 갯수가 도출되도록 합니다. 그런다음 “-” 노드로 보내서 기준과 획득한 갯수의 차이를 구해주면 모든 풀이가 끝나게 됩니다.

 

 

 

결론

딕셔너리를 통해서 필요한 데이터를 직관성 있게 정리한 후에, 필요에 맞춰 적절히 키값을 통해 대응되는 데이터를 꺼내 계산하는 것은 굉장히 편리하고도 유용한 스킬 중 하나 입니다.

다이나모를 사용한 프로그래밍을 할 때, 딕셔너리 노드를 자주 꺼내 쓸 수록, 작성하는 프로그램의 복잡도는 줄어들고, 효율적으로 목적을 달성할 수 있을 것입니다.

다음에 재미있는 다른 문제로 또 찾아오겠습니다.

반응형