본문 바로가기

PS/백준

[BOJ] 백준 1620 나는야 포켓몬 마스터 이다솜 (Swift)

반응형

문제

https://www.acmicpc.net/problem/1620

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net

풀이

문제가 엄청 기네요...

먼저 문제를 살펴보면 n번의 포켓몬의 이름을 입력받고,
m번의 명령을 통해 명령이 숫자이면 포켓몬이름, 문자열이면 포켓몬의 번호를 출력해주는 문제입니다.

어떻게 포켓몬의 이름과 번호를 매칭시킬 수 있을까요?

Swift에서는 HashMap이라고도 불리는 Dictionary 자료형을 사용할 수 있습니다.

간단하게 설명하면 key와 value를 쌍으로 갖는 자료구조이고, key는 중복될 수 없습니다.

https://dev-mandos.tistory.com/88

 

[Swift] 컬렉션 자료형에 대해 알아보자 - 2 (Dictionary)

지난 포스팅에서는 컬렉션 자료형 중 Array에 대해 알아보았습니다. 이번 포스팅에서는 Dictionary에 대해 알아보겠습니다. Dictionary란? Dictionary는 요소가 키-값 쌍인 컬렉션이고, 구조체로 되어있네

dev-mandos.tistory.com

이름을 key로 갖는 Dictionary, 번호를 key로 갖는 Dictionary 두 개를 사용하여 풀이할 수 있습니다.

n번의 포켓몬 이름을 입력받을 때, 이 두 Dictionary에 값을 넣어줍시다.

그 이후 m번의 명령을 통해 문자열이라면 이름을 key로 갖는 Dictionary의 value를 출력해주고,
숫자라면 번호를 key로 갖는 Dictionary의 value를 출력해주면 되겠죠?

그런데 여기서 명령이 문자열인지 숫자인지는 어떻게 알 수 있을까요?

저는 if-let 문법을 사용하여, 명령을 Int로 자료형 변환이 가능하다면 포켓몬 번호이고, 불가능하다면 포켓몬 이름이라고 구분을 해주었습니다.

소스코드

후기

Dictionary 자료형에 대해 알고있다면 쉽게 풀 수 있는 문제입니다.
또한 명령이 String인지 Int인지 알 수 있도록 if-let 문법을 사용하면 쉽게 판단할 수 있습니다.

반응형